我正在尝试将数据框保存到Hive表中。但是该过程耗时太长,最终失败了,以前由于内存问题而丢失了很多任务。
DF分为几列,以尝试同时执行更多执行程序,它们也被缓存在内存中。它不是特别大,并且也不会使获得它的操作复杂化。
·代码: Code
·错误: Executor trace
# java.lang.OutOfMemoryError: GC overhead limit exceeded
# -XX:OnOutOfMemoryError="kill %p"
# Executing /bin/sh -c "kill 24077"...
·要点:
使用这些资源执行程序时,为什么会有这么多失败的任务:
--master yarn --deploy-mode client --driver-memory 20G --executor-memory 20G --num-executors 50 --executor-cores 10 --conf spark.kryoserializer.buffer.max=2000m
此外,当我通过spark2-shell运行该程序时,它能够执行该程序。 看起来,当我使用spark-submit运行它时,它只能卡在一个执行器上,但是正如我所说,我有很多分区,所以为什么要这样做呢?我在做什么错了?
任何帮助将不胜感激, 提前致谢! ;)
答案 0 :(得分:0)
此“ java.lang.OutOfMemoryError:超出了GC开销限制”表示必须为应用程序调整垃圾回收器,否则内存泄漏=)