Sqoop使用
一、 Mysql导入HDFS
1. 在MySQL上新建测试表
2. 使用命令导出
sqoop import
--connectjdbc:mysql://10.10.34.36:3306/sqoop_mysql
--username root
--password123456
--table people
--target-dir/hadooptest/MysqlToHdfs
-m 1
3. 导出成功
4. 查看导出数据
5. 增加where条件导入
条件必须用引号引起来
sqoop import--connect \
jdbc:mysql://10.10.34.36:3306/sqoop_mysql \
--username root--password 123456 --table people \
--where'id>3' \
--target-dir'/hadooptest/MysqlToHdfs2' \
--fields-terminated-by'\001' -m 1
运行成功:
查看HDFS:
6. 增加Query语句
sqoop import --connect\
jdbc:mysql://10.10.34.36:3306/sqoop_mysql\
--username root--password 123456 \
--query 'SELECTid,name FROM people where id > 2 AND $CONDITIONS' \
--split-bypeople.id \
--target-dir'/hadooptest/MysqlToHdfs3'
注意:
1)使用--query这个命令的时候, where后面的参数,必须加上AND $CONDITIONS这个参数
2)存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上\ 即\$CONDITIONS
3)如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上
运行成功:
查看运行结果:
二、 HDFS导入Mysql
1. 在HDFS上建立文件
文本txt信息,以,分开
上传:
查看:
2. 在Mysql上键一张空表
3. 使用命令导入
命令:
sqoop export--connect \
jdbc:mysql://localhost:3306/sqoop_mysql\
--username root\
--password123456 \
--export-dir'/sqooptest/hdfsToMysql' \
--table user \
--fields-terminated-by',' \
-m 1
运行:
卡在Job
原因:slave节点上的NodeManager没有启动
解决:参考1.3.0
重新导入:
报错:
原因:网络通讯的原因。
解决:将localhost改为本机ip
导出完成。但依然报错:
查看导出的MySQL表:
导出成功。
三、 Mysql导入到Hive中(默认Hive库)
1. 启动hive元数据服务
2. 命令
和Mysql导入HDFS类似,只需加上 --hive-import
sqoop import \
--hive-import --connect \
jdbc:mysql://10.10.34.36:3306/sqoop_mysql \
--username root --password 123456 \
--table people \
-m 1
3. 导入成功:
过程也是将mysql表导入到HDFS中,再将HDFS文件load进hive。
4. 查看
四、 MySQL导入Hive中(自定义Hive库和表)
1. 命令
sqoop import --hive-import \
--connect jdbc:mysql://10.10.34.36:3306/sqoop_mysql \
--username root --password 123456 \
--table people \
--hive-table test01.people \
-m 1
2. 导入成功
3. 查看
本次参考链接:
http://blog.csdn.net/dwld_3090271/article/details/50747639