我有一些非常大的表,我试图从源系统数据仓库到HDFS,但是带宽有限。我想只拉出我需要的列,并最大限度地减少使表格站起来的运行时间。
sqoop目前的情况如下:
SELECT
ColumnA,
ColumnB,
....
ColumnN
FROM
TABLE_A
LEFT JOIN
TABLE_B
ON
...
LEFT JOIN
TABLE_N
....
是否可以执行增量sqoop,假设数据以星型模式格式存储,并且维度可以独立于事实更新?
或者,对于我需要的列,我是否需要逐渐扩展整个表的唯一解决方案,以及在HDFS端执行连接?
答案 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>这基本上是一回事。您需要记录所选列的最后/最大值,并将其用于下一次导入。