我有 5 种模式,每种模式都有 8 个 cpu 内核和 30GB 内存。我有 5GB 的 dataset1 和 65GB 的 dataset2,所以我需要加入它们并保存到 s3 文件系统,我设置了以下参数:
--num-executors 4 --spark.driver.memory 8g --executor-cores 5 --executor-memory 27g --conf spark.yarn.executor.memoryOverhead=824m
但是,我到处搜索并尝试了不同的参数,但仍然出现内存不足错误。超出 Gc 开销限制。
在 Java 代码中也使用了这个:
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
conf.set("spark.kryo.registrator", AvgRegistrator.class.getName());
conf.set("spark.driver.maxResultSize", "5g");
conf.set("spark.broadcast.compress", "true");
conf.set("spark.shuffle.compress", "true");
stackoverflow 中没有任何解决方案对我有用。所以任何人都可以给我一个更好的解决方案来摆脱这个问题。
Spark java.lang.OutOfMemoryError: Java heap space
有一段时间我得到这个:
java.lang.OutOfMemoryError: GC overhead limit exceeded