微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spark异常篇-OutOfMemory:GC overhead limit exceeded

执行如下代码时报错

# encoding:utf-8
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession


conf = SparkConf().setMaster('yarn')
sc = SparkContext(conf=conf)
spark = SparkSession(sc)
rdd = spark.read.csv('/spark/gps/GPS1.csv')
print rdd.count()
print rdd.repartition(10000).count()
print rdd.repartition(10000).collect()  # 报错 spark-OutOfMemory:GC overhead limit exceeded

执行命令

spark-submit --master yarn bigdata.py

报错内容

spark-OutOfMemory:GC overhead limit exceeded

 

在执行 count 时没什么问题,各种参数影响不大;但是在执行 collect 时,总是报错

 

原因分析

1. collect 导致数据回传 Driver,致使 Driver 内存溢出

解决方法增加 Driver 内存

spark-submit --master yarn --executor-cores 4 --driver-memory 3G  bigdata.py

 

2. executor-core 数量太多,导致多个 core 之间争夺 GC 时间以及资源,最后导致大部分时间都花在了 GC 上

解决方法是减少 core 数量

spark-submit --master yarn --executor-cores 1  bigdata.py

 

 

 

 

参考资料:

https://blog.csdn.net/amghost/article/details/45303315

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐