Sqoop

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格式

有不对的地方欢迎评论纠正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值