【发布时间】:2016-12-08 10:24:57
【问题描述】:
使用 --append 和 --incremental append 将新行从 RDBMS 插入 HDFS 中的现有数据集有什么区别?我正在使用--append 和--where 和--incremental append 和--last-value。
【问题讨论】:
标签: sqoop
使用 --append 和 --incremental append 将新行从 RDBMS 插入 HDFS 中的现有数据集有什么区别?我正在使用--append 和--where 和--incremental append 和--last-value。
【问题讨论】:
标签: sqoop
--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 导入:append 和 lastmodified。
您可以使用--incremental 参数来指定要执行的增量导入的类型。
追加:
append 模式。 --check-column 指定包含行ID 的列。 --last-value 指定值的行。上次修改时间:
lastmodified 模式。 当源表的行可能被更新时,您应该使用它,并且每次更新都会将 last-modified 列的值设置为当前时间戳。 --last-value 指定的时间戳更新的行被导入。--last-value,以确保仅导入新数据或更新数据。 【讨论】:
指定
--incremental lastmodified
将生成更新语句,因此将根据列中提到的列更新行(如果存在)
--checkcolumn
同时提到
--incremental append
将插入重复记录,因为它只会追加
【讨论】: