gpt4 book ai didi

java - Apache orc writer 清除内存

转载 作者:行者123 更新时间:2023-12-05 07:40:54 25 4
gpt4 key购买 nike

我们愿意用 org.apache.orc.Writer 创建 orc 文件。我们的测试没问题,直到从包含 blob-s 的更大数据库表创建 orc 文件。我们已尝试更改以下设置,但均无济于事:

org.apache.orc.OrcFile.WriterOptions:
bufferSize()
stripeSize()
blockSize()
enforceBufferSize()

Orc writer 正在获取所有数据集,只有在完成后才将它们写出,这种行为会导致较大数据集的内存问题。有没有办法连续填充 ORC 文件(连续从内存中刷新),而不是在关闭文件编写器时从内存中刷新数据?从包含 blob 且不能仅在内存中处理的数据源创建 orc 文件的最佳做法是什么?

如有任何信息,我们将不胜感激!

谢谢。塔玛斯

最佳答案

我知道这是一个非常古老的问题,但我会为任何其他有同样问题的人提供我的解决方案。

事实证明,ORCWriter 实现会检查内存限制以每 n 行刷新一次缓冲区,但是如果您的行大到足以在执行检查之前耗尽整个内存,则会出现 OOM 错误。因此,也许您应该尝试在内存检查/刷新之间设置较小的行数。默认值为 5000。

var configuration = new Configuration();
configuration.set(OrcConf.ROWS_BETWEEN_CHECKS.getAttribute(), String.valueOf(1000));
var options = OrcFile.writerOptions(configuration)
.stripeSize(stripeSize)
.setSchema(schema);

文档在这里: https://github.com/apache/orc/blob/fc6f6aee6571df6e53de5adba7cc0b2670c5df91/java/core/src/java/org/apache/orc/OrcConf.java#L165

关于java - Apache orc writer 清除内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45798011/

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