pyspark - 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?另外如何消除此错误?
解决方案
要了解 GC 详细信息,可以使用以下命令。一些相同的文档
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
推荐阅读
- r - Quadprog 用于带约束的投资组合优化
- scala - 使用 sbt 获取存储库内容
- github - 如果它们未被跟踪,您可以将大于 100mb 的文件添加到 GitHub 吗?
- nette - 将自定义控件添加到 Nette 表单
- docker - 如何在 docker 容器中安装 elasticsearch?
- redis - 雷迪斯。是否可以创建插入排序的列表集?
- python - 是否可以在函数中返回具有泛型类型的列表
- c# - 我在控制器中的反序列化请求正文中有很多错误。但我看到日志中的最后一个
- html - css justify-content:空格之间;不工作
- php - 找出用于构建 composer.lock 文件的 composer 版本