-append和--incremental附加在sqoop中的区别

时间:2016-08-02 21:46:43

标签: sqoop

使用--append和--incremental append将新行从RDBMS插入HDFS中的现有数据集之间有什么区别吗?我正在使用--append以及--where和--incremental追加--last-value。

2 个答案:

答案 0 :(得分:5)

<% require 'json' hash = JSON[{"data":{"id":"1","type":"users","attributes":{"username":"Iggy1"},"relationships":{"items":{"data":[{"id":"1","type":"items"},{"id":"7","type":"items"}]},"lists":{"data":[{"id":"1","type":"lists"},{"id":"8","type":"lists"},{"id":"14","type":"lists"},{"id":"15","type":"lists"},{"id":"17","type":"lists"}]}}}}.to_json] %> <pre> <%= JSON.pretty_generate(hash)%> </pre> 将数据附加到HDFS中的现有数据集

--append

与以下内容相同:(仅将数据附加到现有数据集也可附加重复项 - 注意:这不会覆盖数据但会追加​​):

--append 
--where "dpt_id >10"

但不是以下选项(附加新数据并更新现有数据 - 无重复 - 注意:这不会覆盖数据,但会更新或追加)< / p>

--incremental append
--check-column dpt_id
--last-value 10

Sqoop支持两种类型的--incremental lastmodified --check-column lastupdated --last-value 20160802000000 导入:incrementalappend

您可以使用lastmodified参数指定要执行的增量导入的类型。

<强> 追加:

  • 导入表格时应指定--incremental模式,其中新行会随着行ID值的增加而不断添加。
  • 您可以使用append指定包含行ID的列。
  • Sqoop会导入检查列的值大于--check-column指定值的行。

<强> 上次更改时间:

  • Sqoop支持的备用表更新策略称为--last-value模式。 您应该在源表的行可以更新时使用此,并且每次此类更新都会将最后修改的列的值设置为当前时间戳。
  • 导入检查列的时间戳比lastmodified指定的时间戳更新的行。
  • 运行后续导入时,应以这种方式指定--last-value,以确保仅导入新数据或更新数据。
  • 通过创建增量导入作为已保存作业自动处理,这是执行定期增量导入的首选机制。

read more about incremental_imports here. . .

答案 1 :(得分:1)

指定

--incremental lastmodified

将生成更新语句,因此将根据

中提到的列更新行(如果存在)
--checkcolumn

提到

--incremental append

将插入重复的记录,因为它只会追加