Sqoop
sqoop模板(复制粘贴去掉注释,保证\后没有空格否则执行出错误)
query 导入
sqoop import --connect jdbc:mysql://Hadoop01:3306/test
–driver com.mysql.jdbc.Driver
–username root --password root
-m 1
–split-by id
–fields-terminated-by ‘\t’
–query “SELECT s1.id, s1.name, s1.age FROM stu s1 LEFT JOIN stu1 s2 ON s1.id = s2.id WHERE s2.name is NULL AND s1.id > 3 and /$CONDITIONS” \ conditions必须加传递参数,多个map是保证查询出的数据有序
–as-parquetfile
–delete-target-dir \
–target-dir hdfs://hadoop01:9000/sq24/08
mysql to hive
mysql to hive分区表(1.4.7版本)
sqoop import --connect jdbc:mysql://Hadoop01:3306/test \ 链接MySQL
–driver com.mysql.jdbc.Driver \ 加载驱动
–username root --password 123456 \ Mysql的账号密码
–table user \ mysql表的表名
–columns user_id,user_name \ 导出的列
-m 1 \ map数量
–incremental append \ append增量方式
–check-column trade_time \ 增量检查的列
–last-value ‘2019-09-18 17:29:12’ \ 增量列上次添加的值
–fields-terminated-by ’ ’ \ hive表字段分隔符
–hive-database exam2 \ hive数据库名称
–hive-table u1 \ hive表名
–hive-import \ 导出到hive
–hive-partition-key trade_time \ hive分区表分区字段
–hive-partition-value 2019921 hive分区表分区值
mysql to hive分区表(1.4.6版本)
sqoop import --connect jdbc:mysql:__害怕01:3306/test
–driver com.mysql.jdbc.Driver
–username root --password 123
–table user
–incremental lastmodified \ lastmodified方式增量
–check-column trade_time \
–last-value “2019-09-18 06:53:00”
–merge-key user_id \ 去重字段,后加入的会覆盖掉上一次加入的数据
–target-dir _sqoop_m2h/01 \ 中间目录,导入到hive用的是剪切的方式
–hive-import
–hive-database qf24
–hive-table exam_t8
–hive-partition-key day
–hive-partition-value 2019-09-19
–fields-terminated-by “\t”
hdfs to mysql
sqoop export
–connect jdbc:mysql://hadoop01:3306/test
–username root
–password 123456
–table stu2
–input-null-string ‘’
–input-null-non-string ‘’
–fields-terminated-by ‘\t’
–export-dir hdfs://hadoop01:9000/test/test33
sqoop job
sqoop job --create job_3 – import
–driver com.mysql.jdbc.Driver
–connect jdbc:mysql://Hadoop01:3306/test
–username root --password 123456
–table user
–target-dir /user/sqoopmysql
–delete-target-dir
–num-mappers 1 \ map数量等同于-m 1
–fields-terminated-by “\t”
注意事项
1.tatget-dir在增量情况下不能与delete-tatget-dir连用
2.sqoop1.4.7增量支持append方式从mysql导入到hive
sqoop1.4.6增量支持lastmodified方式从mysql导入到hive
3.–table stu2 --columns id,name==–query “SELECT id,name FROM stu2 > 3 and $CONDITIONS” \ 两者不能同时用
4.–query 后的查询语句可以是""也可以是‘’
区别’'是一句话
""是执行结果,$CONDITIONS前需要加/转义
5.lastmodified方式增量导入时,check-column必须是与时间有关的类型,因为lastmodified会创建时间戳
6.lastmodified增量添加配置了merge key时会根据merge key进行合并,以前落地到hdfs中的数据也会被进行合并
自己碰到的坑
检查自己的sqoop语句是否正确
原因HIVE_HOME路径有问题:
修改为:/opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0
3.
sqoop语句格式错误,是windows格式的,需要转换为unix格式
有不对的地方欢迎评论纠正