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

spark-excel读取12MB XLSX文件报GC overhead limit exceeded错误如何解决

问题根因与修复方案

1. 首要错误点

你当前代码里maxRowsInMemory参数名末尾多了一个空格,Spark无法正确识别该配置,导致内存行数限制完全不生效,这是最直接的问题。

2. 完整修复步骤

  • 修正参数名空格,同时补充配套的流式读取配置,代码修改如下:
spark.read
  .format("com.crealytics.spark.excel")
  .schema(schema)
  .option("header", "true")
  // 修正参数名空格,可根据实际行宽调整数值,单行列越多、内容越长数值要设越小
  .option("maxRowsInMemory", 1000)
  // 开启临时文件缓冲,内存放不下的内容会溢出到磁盘临时文件
  .option("tempFileThreshold", 10 * 1024 * 1024)
  .option("dateFormat", "dd-MM-YYYY")
  .load(in)
  • 检查spark-excel版本,0.13.0及以上版本才完全支持maxRowsInMemory的磁盘溢出逻辑,低版本该参数仅限制解析时的批次行数,仍然会全量加载数据到内存。
  • 如果仍存在OOM,调整Executor内存配置,给每个Executor至少分配2G运行内存:提交任务时添加参数--executor-memory 2G,同时调低maxRowsInMemory的数值到500甚至更低。
  • 确认你读取的XLSX文件没有超大单列内容(比如单单元格超过10M的长文本/二进制内容),如果存在这类情况,需要单独处理异常单元格,否则会直接占满单批次内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:54:03