sparksql java.lang.OutOfMemoryError: GC overhead limit exceeded
程序员文章站
2022-06-14 09:08:42
...
问题分析:
查看yarn 任务详情 Tracking URL:ApplicationMaster 界面,观察数据分配,发现tasks 的 suffer size分布不均匀。判断为 大表 left jion 小表 left join 大表的关联方式 ,产生了数据倾斜,造成内存溢出。
解决方案:
方案1:设置Spark-SQL adaptive 自适应框架参数
需要在插入语句末尾添加分布键语句,distribute by 。
SET spark.sql.adaptive.enabled=true; -- 默认false 自适应执行框架的开关
SET spark.sql.adaptive.shuffle.targetPostShuffleInputSize=268435456; -- 默认为67108864 动态调整reduce个数的partition大小依据,如设置64MB则reduce阶段每个task最少处理64MB的数据
-- spark.sql.adaptive.minNumPostShufflePartitions -- 默认为1 reduce个数区间最小值
-- spark.sql.adaptive.maxNumPostShufflePartitions -- 默认为500 reduce个数区间最大值
-- spark.sql.adaptive.shuffle.targetPostShuffleRowCount -- 默认为20000000 动态调整reduce个数的partition条数依据,如设置20000000则reduce阶段每个task最少处理20000000条的数据
方案2:设置设置JVM参数
set spark.sql.autoBroadcastJoinThreshold=-1; -- 禁用广播
set spark.driver.extraJavaOptions=-XX:+UseG1GC; -- 对Driver的JVM配置
set spark.executor.extraJavaOptions=-XX:+UseG1GC; -- 对Executor的JVM配置
上一篇: Qt5.9中获取指定目录下的所有图片(名称和入口地址)
下一篇: Kafka问题
推荐阅读
-
AndroidStudio报错GC overhead limit exceeded的解决方案
-
在Intellij IDEA下编译Java项目,报错:java.lang.OutOfMemoryError: ...(此处忽略) GC overhead lim
-
8、grails 打war报错 Error Error executing script War: GC overhead limit exceeded
-
sparksql java.lang.OutOfMemoryError: GC overhead limit exceeded
-
java.lang.OutOfMemoryError: GC overhead limit exceeded
-
java.lang.OutOfMemoryError: GC overhead limit exceeded
-
java.lang.OutOfMemoryError:GC overhead limit exceeded
-
java.lang.OutOfMemoryError:GC overhead limit exceeded
-
java.lang.OutOfMemoryError: GC overhead limit exceeded
-
hive出现java.lang.OutOfMemoryError: GC overhead limit exceeded