【问题标题】:Difference between --append and --incremental append in sqoopsqoop中--append和--incremental append的区别
【发布时间】:2016-12-08 10:24:57
【问题描述】:

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

【问题讨论】:

    标签: sqoop


    【解决方案1】:

    --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 参数来指定要执行的增量导入的类型。

    追加:

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

    上次修改时间:

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

    read more about incremental_imports here. . .

    【讨论】:

      【解决方案2】:

      指定

      --incremental lastmodified
      

      将生成更新语句,因此将根据列中提到的列更新行(如果存在)

      --checkcolumn
      

      同时提到

      --incremental append
      

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

      【讨论】:

        猜你喜欢
        • 2014-12-07
        • 2021-06-10
        • 2021-09-30
        • 2013-10-21
        • 2013-04-15
        • 2018-08-05
        • 2021-04-27
        • 2010-10-18
        • 2020-07-14
        相关资源
        最近更新 更多