首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache orc编写器清除内存

Apache orc编写器清除内存
EN

Stack Overflow用户
提问于 2017-08-21 13:10:20
回答 1查看 413关注 0票数 3

我们愿意用org.apache.orc.Writer创建orc文件。我们的测试是正常的,直到包含blob的更大的数据库表创建orc文件为止。我们试图更改以下设置,但这两种设置都没有帮助:

代码语言:javascript
复制
org.apache.orc.OrcFile.WriterOptions:
bufferSize()
stripeSize()
blockSize()
enforceBufferSize()

Orc作者正在获取所有的数据集,只有当它完成后,写出它们,这种行为就会导致较大数据集上的内存问题。是否有一种方法可以连续填充ORC文件(从内存中连续刷新),而不是在关闭文件编写器时从内存中清除数据?从数据源创建orc文件的最佳实践是什么,该数据源包含blobs,不能仅在内存中处理?

任何信息都将不胜感激!

谢谢。塔马斯

EN

回答 1

Stack Overflow用户

发布于 2022-09-01 18:49:29

我知道这是一个非常老的问题,但我会给出我的解决方案,任何其他有相同的问题。

结果是,ORCWriter实现检查内存限制以每n行刷新缓冲区,但是如果您的行足够大到足以在完成检查之前消耗整个内存,那么OOM错误就会出现。因此,也许您应该尝试在内存检查/刷新之间设置一个较小的行计数。默认值是5000。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45798011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档