我尝试将一些非常大的表从源系统数据仓库sqoop到hdfs,但这样做的带宽有限。我只想拉我需要的列,并尽量减少运行时间,让表站起来。
sqoop当前拉取如下内容:
SELECT
ColumnA,
ColumnB,
....
ColumnN
FROM
TABLE_A
LEFT JOIN
TABLE_B
ON
...
LEFT JOIN
TABLE_N
....
假设数据以星型模式格式存储,并且维度可以独立于事实进行更新,那么是否可以执行增量sqoop?
或者,对于我需要的列,sqoop的唯一解决方案是以增量方式处理整个表,并在hdfs端执行连接吗?
1条答案
按热度按时间xa9qqrwz1#
对于增量导入,需要使用--incremental标志。更多信息请参考以下链接:-
https://sqoop.apache.org/docs/1.4.2/sqoopuserguide.html#_incremental_imports
您需要指定-incremental来告诉sqoop您想要一个增量加载-check列来指定哪个列用于增量sqooping,以及-last值来说明您想要从哪个值开始下一个加载。这只是照片的一半。有更多的方法可以做到这一点。例如,您可以使用-query选项,您的查询就像select*from table where column>123。这基本上是一样的。您需要记录所选列的last/max值,并将其用于下一次导入。