sqoop 中 --append 和 --incremental append 的区别

Difference between --append and --incremental append in sqoop

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

--append 将数据附加到 HDFS 中的现有数据集

--append 
--where "dpt_id >10"

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

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

但不遵循选项(追加新数据并更新现有数据 - 没有重复项 - 注意:这不会覆盖数据,但会更新或追加)

--incremental lastmodified
--check-column lastupdated
--last-value 20160802000000

Sqoop 支持两种类型的 incremental 导入:appendlastmodified

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

追加:

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

上次修改时间:

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

read more about incremental_imports here. . .

指定

--incremental lastmodified

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

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

同时提到

--incremental append

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