【发布时间】:2020-08-16 00:20:30
【问题描述】:
我在对 spark 数据帧执行简单计数操作时遇到以下错误。
org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 4778 tasks (1024.3 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)
设置:
master : yarn-client
spark.driver.memory : 4g
spark.driver.maxResultSize : 1g
spark.executor.cores : 2
spark.executor.memory : 7g
spark.executor.memoryOverhead : 1g
spark.yarn.am.cores : 1
spark.yarn.am.memory : 3g
spark.yarn.am.memoryOverhead : 1g
我不确定为什么这段简单的代码会向驱动程序发送超过 1 GB 的数据。理想情况下,整个计算应该在执行器中进行,并且只有结果应该传递给驱动程序。
如果我将 spark.driver.maxResultSize 增加到更高的值,代码可能会起作用,但我想了解为什么驱动程序需要这么多内存来进行简单的计数操作。
更多信息:
Table : Hive table on top of s3 files
File type : parquet
Compression : snappy
Partition By : date, hr
Data Size : 91 GB [date = '2020-08-13' and hr = 00 to 23]
Number of Sub folders : 24 [hr partitions]
Number of Files : 1286 [date = '2020-08-13' and hr = 00 to 23]
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql