Sqoop增量追加

时间:2016-06-03 02:49:44

标签: mysql jdbc import hive sqoop

在mysql中我有mydb / emp表和字段(eid,ename,esal)。

这里我试图在步骤1中使用增量追加导入emp而不创建作业并传递last-value。

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

我在mydata中获得了名称为-0001的不同文件的结果,其中包含从eid 0到last ex的更新值。 eid 0到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

这里我得到的结果是不同的文件,但只有更新的记录,即从最后的值ex。我用新行eid 7,8更新了表格所以它只包含eid 7和8记录。

有人可以解释为什么这种情况发生在工作中而不是正常的脚本吗? 如果记录巨大,如何确定检查栏后的最后一个值?任何直接的方式来知道最后更新的值而不检查最终值?

1 个答案:

答案 0 :(得分:0)

在增量导入中,如果你没有指定最后一个值,sqoop会导入所有行,但是当它保存为作业时,即使没有给出最后一个值,sqoop也知道它从哪里导入。 如果你打算做一份保存的工作,你不需要给出最后一个值,但是如果你想知道它,那就是这样给出的:

--last-value

请参阅user guide