首页 > 解决方案 > pyspark客户端模式下的Java堆空间OutOfMemoryError

问题描述

我正在使用 pyspark 客户端模式。系统配置是 32 Gb 内存和 32 个内核。我的驱动程序内存是 2048,执行程序内存是 2048。下面是我的 pyspark 配置。

 spark = SparkSession.builder \
.appName(appName) \
.master(master) \
.config("hive.metastore.uris", "thrift://localhost:9083") \
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") \
.config("spark.executor.cores", "4") \
.config("spark.executor.instances", "5") \
.config("spark.debug.maxToStringFields", "200") \
.config("spark.sql.execution.arrow.enabled", "true") \
.config("spark.sql.execution.arrow.fallback.enabled", "true") \
.config("spark.shuffle.service.index.cache.size", "2048") \
.config("spark.executor.extraJavaOptions", "-XX:ParallelGCThreads=4 -XX:+UseParallelGC") \
.config("spark.io.compression.codec", "org.apache.spark.io.LZ4CompressionCodec") \
.config("spark.cleaner.referenceTracking.blocking ", "false") \
.config("spark.shuffle.compress", "True") \
.config("spark.sql.shuffle.partitions", "20") \
.config("spark.default.parallelism", "20").config("spark.cleaner.ttl", "60") \
.enableHiveSupport() \
.getOrCreate()

当我从 csv 格式的 hive 中获取超过 500 000 行(8 gb)时,会出现超出 gc 限制的错误。是否有任何命令可以检查使用了多少 gc 或未使用多少 gc?另外如何消除此错误?

标签: pyspark

解决方案


要了解 GC 详细信息,可以使用以下命令。一些相同的文档

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

推荐阅读