我正在尝试使用以下配置从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小时分配给同一个映射器。
对此的任何指导都会非常有用。