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

时间:2017-11-13 15:35:18

标签: hadoop hive hdfs sqoop data-warehouse

我有一些非常大的表,我试图从源系统数据仓库到HDFS,但是带宽有限。我想只拉出我需要的列,并最大限度地减少使表格站起来的运行时间。

sqoop目前的情况如下:

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

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

或者,对于我需要的列,我是否需要逐渐扩展整个表的唯一解决方案,以及在HDFS端执行连接?

1 个答案:

答案 0 :(得分:1)

对于增量导入,您需要使用--incremental flag。有关详细信息,请参阅以下链接: -

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

你需要指定-incremental来告诉sqoop你想要一个增量load -check-column来指定哪个列用于增量sqooping,-last-value来指示你想从哪个值开始sqooping下一个load。 这只是图片的一半。有更多的方法可以做到这一点。例如。你可以使用-query选项,你的查询就像Select * from table where column>这基本上是一回事。您需要记录所选列的最后/最大值,并将其用于下一次导入。