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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM