2017-05-12 26 views
0

我想弄清楚一种方法,在做历史加载的同时我可以在块中进行sqoop数据。Sqoop在进行历史加载时在块中加载数据

考虑一个场景,我有3年的数据,当我触发一个sqoop时,它将一次获取所有数据并推入HDFS。

我想避免对群集施加压力,而不是以上是否有任何方法可以告诉sqoop在一个月的块中加载数据,而不是一次性加载所有3年的数据。

回答

0

您可以随时使用--query选项并按月过滤您的表格,如果这是一次性思考,则可以重复该过程36天。

根据您的Hadoop版本,您可以尝试使用--split-by选项按年份和月份(按月计算)拆分,这意味着您的sqoop进程中的每个映射器将sqoop 1个月并限制最大数目一个

https://issues.apache.org/jira/browse/MAPREDUCE-5583

+0

同时运行映射器我不想一个映射的过程1点月份的数据。我的问题是围绕分布器分发一个月的数据,以便在历史负载期间加快负载进程。因此,理想情况下,每次sqoop调用一次将带来一个月的数据,而不是将所有36(3年)个月的数据带入单个调用。 – Shashi

+0

是不可能的运行36独立sqoops像我建议使用 - 查询?你的情况并不清楚。 ..指定你想要做什么 – hlagos

+0

你可以结合使用'-m(或--num-mappers)'和where子句来实现这一点。 where子句将创建1个月的数据视图,然后不会。指定的映射器将分割该数据以进行传输。 – vmorusu