Spark作业失败,出现maxResultSize异常
问题类型
Spark作业类。
问题现象
客户执行SparkSQL作业,由于出现maxResultSize异常而失败。报错信息如下:
org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of XXXX tasks (X.0 GB) is bigger than spark.driver.maxResultSize (X.0 GB)
原因分析
发生此错误是因为超出了配置的大小限制。大小限制适用于跨所有分区的Spark操作的总序列化结果。
Spark操作包括多项操作,例如对驱动程序节点执行collect()操作、toPandas()操作或将大型文件保存到驱动程序本地文件系统。
处理步骤
将属性“spark.driver.maxResultSize”设置为值 <X>g,该值高于群集Spark配置中的异常消息报告的值:
spark.driver.maxResultSize <X>g
默认值为1g。如果设置上限,则驱动程序中可能会发生内存不足错误(取决于 spark.driver.memory 和 JVM 中对象的内存使用情况)。设置适当的限制,可以防止出现内存不足错误。
