代码之家  ›  专栏  ›  技术社区  ›  boethius

在包含连接的表上执行增量Sqoop?

  •  1
  • boethius  · 技术社区  · 7 年前

    我有一些非常大的表,我正试图从源系统数据仓库到HDFS中进行sqoop,但这样做的带宽有限。我只想拉我需要的列,并尽量减少运行时间,让表站起来。

    sqoop目前提供以下功能:

    SELECT
        ColumnA,
        ColumnB,
        ....
        ColumnN
    FROM
        TABLE_A
    LEFT JOIN
        TABLE_B
    ON
         ...
    LEFT JOIN
        TABLE_N
    ....
    

    假设数据以星型模式格式存储,并且维度可以独立于事实进行更新,那么是否可以执行增量sqoop?

    或者,对于我需要的列,唯一的解决方案是对整个表进行sqoop处理,并在HDFS端执行连接吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Max08    7 年前

    对于增量导入,您需要使用--incremental标志。请参阅以下链接了解更多信息:-

    https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports

    您需要指定incremental来告诉sqoop您想要一个增量负载检查列来指定用于增量sqoop的列,以及最后一个值来说明您想要从哪个值开始下一个负载。 这只是画面的一半。有更多的方法可以做到这一点。例如,您可以使用查询选项,您的查询类似于从表中选择*,其中列>这基本上是一样的。您需要记录所选列的最后/最大值,并将其用于下一次导入。