我有一个抛出“java.lang.OutOfMemoryError:超出GC开销限制”的Spark作业。
这项工作正在尝试处理文件大小4.5G。
我尝试过以下火花配置:
--num-executors 6 --executor-memory 6G --executor-cores 6 --driver-memory 3G
我尝试增加更多核心和执行器,但有时会工作,但处理文件需要20多分钟。
我能做些什么来改善表现吗?或者停止Java堆问题?
答案 0 :(得分:3)
唯一的解决方案是微调配置。
根据我的经验,我可以为OOM说出以下几点:
如果您需要缓存,那么请考虑分析有关资源的数据和应用程序。
spark.executor.memory
增加到最大值spark.storage.memoryFraction
的专用内存。如果涉及大量的随机存储器,那么请尽量避免或拆分分配答案 1 :(得分:0)
您可以尝试增加驱动程序内存。如果你没有足够的记忆,你可以从执行者记忆
检查spark-ui以查看调度程序延迟是什么。您可以访问端口4040上的spark UI。如果调度程序延迟很高,通常,驱动程序可能会向执行程序发送大量数据。哪个需要修复。