一、sqoop的配置
1、上传压缩包,解压
2、配置环境变量
3、添加数据库驱动包
cp mysql-connector-java-5.1.10.jar /sqoop/lib
4、重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
5、修改配置configure-sqoop
去掉未安装服务相关内容;例如(HBase、HCatalog、Accumulo):
• #if [ ! -d "${HBASE_HOME}" ]; then
• # echo "Error: $HBASE_HOME does not exist!"
• # echo 'Please set $HBASE_HOME to the root of your HBase installation.'
• # exit 1
6、测试
– sqoop version
– sqoop list-databases -connect jdbc:mysql://node1:3306/ -username root -password 123456
7、sqoop导入数据(从mysql导入数据到hdfs中)
#导入简单的表
import
--connect
jdbc:mysql://node1:3306/result_db
--username
root
--password
123456
--table
dimension_browser
--columns
id,browser_name,browser_version
--where
'browser_name="Firefox"'
--target-dir
hdfs://node1:9000/sqoop/data1
--as-textfile
--m
1
--delete-target-dir
--fetch-size
10
8、链表导入
import
--connect
jdbc:mysql://node1:3306/result_db
--username
root
--password
123456
--query
'select b.browser_name,b.browser_version,d.new_install_users from stats_device_browser d join dimension_browser b on d.browser_dimension_id=b.id where b.browser_name="Firefox" and $CONDITIONS'
--target-dir
hdfs://node1:9000/sqoop/data2
--as-textfile
--m
1
--delete-target-dir
--fetch-size
10
9、导入数据到hive中,工作机制,通过mapreduce把关系型数据库的数据导入到hdfs中去,然后创建hive表,然后通过load data加载数据到hive表中
import
--connect
jdbc:mysql://node1:3306/result_db
--username
root
--password
123456
--query
'select b.browser_name,b.browser_version,d.new_install_users from stats_device_browser d join dimension_browser b on d.browser_dimension_id=b.id where b.browser_name="IE" and $CONDITIONS'
--target-dir
hdfs://node1:9000/sqoop/data3
--as-textfile
--m
1
--delete-target-dir
--fetch-size
10
--hive-import
--hive-overwrite
--create-hive-table
--hive-table
t_test1
10、导出数据,从hdfs中把数据导出到mysql中
export
--connect
jdbc:mysql://node1:3306/test
--username
root
--password
123456
--table
t_sqoop
--columns
id,abc,efg
--export-dir
hdfs://node1:9000/sqoop/data1
--m
1
二、hbase和hive的整合
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
1、把hive/lib下的hive-hbase-handler-1.2.1.jar,cp到hbase/lib 下,如果是hbase集群,则要把这个jar包cp到每个节点的hbase/lib下
2、把hbase中的所有的jar,cp到每个安装hive的hive/lib下
3、在hive的配置文件hive-site.xml增加属性:node3、node4、node5是zookper集群所在的节点
<property>
<name>hbase.zookeeper.quorum</name>
<value>node3,node4,node5</value>
</property>
4、在hive中创建临时表
–中间表第一个字段名字为key(必须)
CREATE EXTERNAL TABLE tmp_order
(key string,id string,user_id string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,order:order_id,order:user_id")
TBLPROPERTIES ("hbase.table.name" = "t_order");
5、在hbase中就有了表t_order
6、导入数据,从hive的t_hive_order 导入到hive临时(tmp_order)在hive执行命令:
insert into table tmp_order
select concat(user_id,'_',date_format(order_createtime,'yyyy'),'_',id),
id,
user_id,
order_amount,
order_status,
order_createtime
from t_order where day='20160113'
7、以下通过shell方式导入数据
#!/bin/bash
#
label="2015-04-01"
hive -e "insert into table tmp_order
select concat(user_id,'_',order_createtime,'_',id),
id,
user_id,
order_amount,
order_status,
order_createtime
from t_hive_order where day='$label'" && echo 'import order data success!'