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