You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache ORC读取文件时缓冲区过小,如何修改配置调整大小?

解决ORC文件读取缓冲区大小不足的问题

你遇到的是ORC读取器的列数据缓冲区溢出问题——默认65536字节(64KB)的缓冲区无法容纳单条列数据的实际大小(1817279字节),这个参数是可以修改的,不同运行环境的配置方式如下:

1. Spark 环境

  • 核心配置项:spark.sql.orc.buffer.size(单位:字节)
  • 配置方式:
    • 在SparkSession初始化时通过代码设置:
      val spark = SparkSession.builder()
        .config("spark.sql.orc.buffer.size", "1817279")
        .appName("ORCReaderDemo")
        .getOrCreate()
      
    • 或者在spark-defaults.conf中添加全局配置:
      spark.sql.orc.buffer.size 1817279
      

2. Hive 环境

  • 核心配置项:orc.reader.buffer.size(单位:字节)
  • 配置方式:
    • 在hive-site.xml中添加配置节点:
      <property>
        <name>orc.reader.buffer.size</name>
        <value>1817279</value>
      </property>
      
    • 或者启动Hive CLI时临时指定:
      hive --hiveconf orc.reader.buffer.size=1817279
      

3. 原生ORC Java/Python 库

Java 端

通过ReaderOptions直接设置缓冲区大小:

import org.apache.orc.Reader;
import org.apache.orc.ReaderOptions;
import org.apache.orc.OrcFile;

ReaderOptions options = ReaderOptions.create().setBufferSize(1817279);
Reader reader = OrcFile.createReader(new Path("path/to/file.orc"), options);

Python 端(pyorc 库)

读取文件时指定buffer_size参数:

import pyorc

with open("path/to/file.orc", "rb") as f:
    reader = pyorc.Reader(f, buffer_size=1817279)

注意事项

  • 确保使用的ORC版本不低于1.5.0,该参数在更早的版本中可能未被支持;
  • 设置的缓冲区大小需不小于单条列数据的最大实际长度,避免再次溢出。

内容的提问来源于stack exchange,提问作者Ruben Hartenstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:54:57