在包含联接的 table 上执行增量 Sqoop?

Perform Incremental Sqoop on table that contains joins?

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

sqoop 目前拉取这样的东西:

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

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

或者,对于我需要的列,增量地对整个 table 进行 sqoop 并在 HDFS 端执行连接的唯一解决方案是什么?

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

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

您需要指定 —incremental 来告诉 sqoop 您想要增量加载 —check-column 来指定哪一列用于增量 sqooping 和 —last-value 来说明您希望从哪个值开始下一个 sqooping加载。 这只是图片的一半。还有更多方法可以做到 this.for 例如。您可以使用 —query 选项,您的查询将类似于 Select * from table where column > 123。这基本上是同一回事。您需要记录所选列的 last/max 值并将其用于下一次导入。