1.参考官网文档:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive_2
2.sqoop可以将mysql写入hive、HDFS、hbase中
3.sqoop可以将hive、HDFS、hbase数据写入mysql中
4.发音:死谷瀑
安装
解压
tar -zxvf sqoop-1.4.6.xxx.tar.gz -C /opt/bigdata
复制
mv sqoop-1.4.6.xxx sqoop sqoop-1.4.6
配置环境
/etc/profile
测试
sq
配置 /conf目录
mv sqoop-env-template.sh sqoop-env.sh(不用修改。里面都是找hadoop环境,已经有了)
拷贝
mysql驱动包到 /bin目录下
查看版本
sqoop version
测试连接mysql,连接成功会显示所有库
sqoop list-databases --connect jdbc:mysql://node01:3306 --username root --password aa123456
sqoop也是一个MR
将mysql数据写入HDFS
语法:
sqoop import --connect jdbc:mysql://ke01:3306/test --username root --password aa123456 --as-textfile --columns id,name --delete-target-dir -m 1 --table info --target-dir /sqoop
运行时会启动一个MR任务
测试:HIVE中验证数据
hive> dfs -cat /sqoop/*;
1,xiaoke
2,xiaowang
3,xiaoming
4,4
将命令放入文件中
vi option2
import
--connect
jdbc:mysql://ke01:3306/test
--username
root
--password
aa123456
--as-textfile
--delete-target-dir
-m
1
--target-dir
/sqoop
-e
select * from info where id > 2 and $CONDITIONS
$CONDITIONS是sql中的1=1
执行:
sqoop --option-file option2
验证:
dfs -cat /sqoop/*
3,xiaoming
4,4
sqoop写入到hive中
参考:7.2.12. Importing Data Into Hive
vi option3
import
--connect
jdbc:mysql://ke01:3306/test
--username
root
--password
aa123456
--as-textfile
--delete-target-dir
-m
1
--target-dir
/sqoop
-e
select * from info where id > 2 and $CONDITIONS
--hive-import
--create-hive-table
--hive-table
h_info
运行:
sqoop --options-file option3
MR运行步骤: sqoop先往hdfs中写数据,在写入hive(HDFS对应hive目录)中
也可以自己指定分隔符:
--input-fields-terminated-by
sqoop写入到HBase中
需要找到对应的sqoop版本和hbase版本,否则报错
参考:7.2.13. Importing Data Into HBase
将hive(hdfs)数据导入mysql
1.当数据是map、数组格式会把这个列当做一个字符串存入mysql
vi option4
export
--connect
jdbc:mysql://ke01:3306/test
--username
root
--password
aa123456
--columns
id,name,hobby,address
--export-dir
/user/hive_ke/warehouse/psn1
-m
1
--table
test
运行:
sqoop --options-file option4
如果目录/user/hive_ke/warehouse/psn1 是HDFS有分隔符则使用
--input-fields-terminated-by