1原始导出脚本:
sqoop import --connect jdbc:mysql://dev07:3306/dianpingdb --username root --password root --table category --target-dir /user/zxh/sqoop1 --incremental lastmodified --check-column updated_at --merge-key id --last-value "2019-06-12 12:39:43" --m 1 --fields-terminated-by "\t"
1.1问题:
每次增量更新时都得动态的传入--last-value。
1.2 解决方案:
查阅运行日志发现如下说明
想动态保存需要注册成job(作业)。
2 Sqoop作业
2.1注册job执行脚本:
sqoop job \
--create myjob1 \
-- import \
--connect jdbc:mysql://dev07:3306/dianpingdb \
--username root \
--password root \
--table category \
--target-dir /user/zxh/sqoop1 \
--incremental lastmodified \
--check-column updated_at --merge-key id \
--last-value "2019-06-12 12:39:43" \
--m 1 \
--fields-terminated-by "\t"
2.2 验证作业
sqoop job --list
2.3 执行作业
sqoop job --exec myjob1
会出现输入密码提示:
2.4 输入密码问题解决
在sqoop 配置文件sqoop-site.xml下增加如下配置:
<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true, allow saved passwords in the metastore.
</description>
</property>
2.5 注意事项
在修改完配置文件后重新执行myjob1 还是会显示输入密码,此时需要将之前注册的job删除,在重新注册,首次执行时会根据你传入的参数进行查询,再次执行时会自动读取上次的执行时间。