失败的任务-将DF写入表

时间:2018-12-21 19:18:01

标签: apache-spark apache-spark-sql

我正在尝试将数据框保存到Hive表中。但是该过程耗时太长,最终失败了,以前由于内存问题而丢失了很多任务。

DF分为几列,以尝试同时执行更多执行程序,它们也被缓存在内存中。它不是特别大,并且也不会使获得它的操作复杂化。

·代码: Code

·执行计划enter image description here

·错误Executor trace

# java.lang.OutOfMemoryError: GC overhead limit exceeded
# -XX:OnOutOfMemoryError="kill %p"
#   Executing /bin/sh -c "kill 24077"...

enter image description here

·要点

使用这些资源执行程序时,为什么会有这么多失败的任务:

--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运行它时,它只能卡在一个执行器上,但是正如我所说,我有很多分区,所以为什么要这样做呢?我在做什么错了?

任何帮助将不胜感激, 提前致谢! ;)

1 个答案:

答案 0 :(得分:0)

此“ java.lang.OutOfMemoryError:超出了GC开销限制”表示必须为应用程序调整垃圾回收器,否则内存泄漏=)