我创建了带有最后一个值的增量追加的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表中?
您能帮我吗?
答案 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