gpt4 book ai didi

hadoop - Sqoop 导出作业的 sqoop.export.records.per.statement 是否有限制?

转载 作者:可可西里 更新时间:2023-11-01 14:46:55 24 4
gpt4 key购买 nike

有谁知道Sqoop批量导出作业的sqoop.export.records.per.statement的值是否有限制?

我有非常大的数据,例如 200,000,000 行数据要从 Impala 导出到 Vertica。我将得到 [Vertica][VJDBC](5065) ERROR: Too many ROS containers exist for the following projections 如果 records per statement 设置得太低,或者 java.lang.OutOfMemoryError: GC如果每个语句的记录数设置得太高,则超出开销限制

有人知道如何解决这个问题吗?谢谢!

最佳答案

我认为限制是内存。如果你增加堆,它会让你设置更高的数字。尝试添加 -D mapred.child.java.opts=-Xmx1024M 或比当前设置更大的数字?

您可以尝试增加 export.statements.per.transaction 并减少每条语句的记录。我认为这对 ROS 容器方面没有帮助,因为我认为每批 SQL = 1 COPY 语句 = 1 ROS 容器。我认为它不会将多批 INSERT 转换为单个 COPY,但我现在没有办法对其进行测试。

您可以绕过 sqoop 并流式传输数据(您可能需要构建 COPY),例如:

impala-shell -k -i server:port -B -q 'select * from mytable' --output_delimiter="|" | vsql -h database_host -U user -w password -c 'copy mytable from stdin direct'

关于hadoop - Sqoop 导出作业的 sqoop.export.records.per.statement 是否有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com