在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记录。
有人可以解释为什么这种情况发生在工作中而不是正常的脚本吗? 如果记录巨大,如何确定检查栏后的最后一个值?任何直接的方式来知道最后更新的值而不检查最终值?
答案 0 :(得分:0)
在增量导入中,如果你没有指定最后一个值,sqoop会导入所有行,但是当它保存为作业时,即使没有给出最后一个值,sqoop也知道它从哪里导入。 如果你打算做一份保存的工作,你不需要给出最后一个值,但是如果你想知道它,那就是这样给出的:
--last-value
请参阅user guide。