sqoop增量追加

r55awzrz  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(362)

在mysql中,我有mydb/emp表和字段(eid、ename、esal)。
在这里,我尝试在步骤1中使用incremental append导入emp,而不创建job并传递最后一个值。

sqoop import  -- connect jdbc:mysql://localhost/myDB --table  test --m 1 
--target-dir /user/cloudera/mydata --incremental append --check-column eid

我在mydata中得到了名为part-0001的不同文件的结果。。具有从eid 0到最后一个(例如eid 0到eid 8)记录的更新值。
但是当我用job做同样的代码时,结果是不同的。。。

sqoop job  --create dayimport  -- import  --connect jdbc:mysql://localhost/myDB --table  test --m 1 --target-dir /user/cloudera/mydata --incremental append --check-column eid 

sqoop job --exec dayimport

在这里,我得到了不同文件的结果,但只更新了记录,即从上一个值,例如,我用新行eid7,8更新了表,所以它只包含eid7和eid8记录。
有人能解释为什么这是发生在工作,而不是正常的脚本?如果记录太大,如何确定检查列后的最后一个值?有没有不检查结束值就知道上次更新值的直接方法?

lxkprmvk

lxkprmvk1#

在增量导入中,如果不指定最后一个值,sqoop将导入所有行,但是当它保存为job时,即使没有给出最后一个值,sqoop也知道从何处导入。如果您计划创建一个保存的作业,则不需要给出最后一个值,但如果您想了解它,则可以这样给出:

--last-value

请参阅用户指南。

相关问题