sqoop增量导入更新的行和新创建的记录

时间:2018-06-24 06:36:59

标签: mysql hive sqoop sqoop2

我创建了带有最后一个值的增量追加的sqoop作业

工作:

sqoop job --create myjob2 -- import --connect jdbc:mysql://host/DBnam -username user -password passwor --table savingssmal --check-column id --incremental append --last-value 0 --target-dir /user/xxxx/prac/sqoop --split-by id --as-parquetfile -m 1

我的问题是:我想将新创建的记录以及更新后的记录导入到mysql表中?

您能帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用lastmodified模式进行增量Sqoop导入。

append模式(在您的示例中使用)用于根据增加的行ID值导入行。因此,作业运行时,将导入--check-column(即id)大于--last-value(即0)的行。如果更新了一行,则id通常将保持不变,并且不会导入更新的行。

lastmodified模式用于基于时间戳列(例如,last_modified_time)导入行。作业运行时,它将导入比--check-column指定的--last-value更新的行。写入表的应用程序应在插入和更新上更新last_modified_time列。这样,当Sqoop作业运行时,新插入的行和更新的行都将被导入。

根据您的示例使用lastmodified模式进行的示例调用如下:

sqoop job --create myjob2 -- import --connect jdbc:mysql://host/DBnam -username user -password passwor --table savingssmal --check-column last_update_time --incremental lastmodified --last-value "2018-02-03 04:38:39.0" --target-dir /user/xxxx/prac/sqoop --as-parquetfile -m 1