Sqoop:了解num-mappers和fetch-size如何协同工作

时间:2017-09-11 14:54:19

标签: hadoop cloudera sqoop sqoop2

我正在尝试使用以下配置从MySQL逐步导入表:

--split-by
date_format(updated_at, '%l')
--boundary-query
select 1, 12 from ${table}
--m
12
--incremental
lastmodified
--last-value
${lastValue}
--check-column
updated_at
--merge-key
id

当我运行此操作时,我收到Java Heap Space错误。在搜索了一下后,我开始了解另一个配置--fetch-size <n>,默认为1000,在sqoop中控制一次从数据库读取的条目数。

默认容器内存分配为1 GB,我提取的表大小约为100 GB。

我试图弄清楚为什么它会抛出Java Heap Space错误,因为我确定它是否会同时拉出1000行,数据大小为1000行不会超过1GB。

fetch-data配置会覆盖split-by, boundary-query and mapper配置吗?

这个配置背后的想法是确保数据分发现在是倾斜的,并且很少有映射器不会最终拉动所有数据。因此,使用此配置,我按照split以12小时格式执行hour,以便将第1小时和第13小时分配给同一个映射器。

对此的任何指导都会非常有用。

0 个答案:

没有答案