如何解决org.apache.spark.SparkException:Kryo序列化缓冲区溢出问题?
解决PySpark读取Parquet时的Kryo序列化缓冲区溢出错误
这个错误是因为Kryo序列化所需的缓冲区空间超过了当前配置的最大值。错误信息里明确显示需要约57.6MB的缓冲区,但当前可用空间为0,所以必须调整spark.kryoserializer.buffer.max参数来扩大缓冲区上限。
具体解决步骤:
- 在Spark初始化的配置参数中添加
spark.kryoserializer.buffer.max,设置一个能覆盖所需空间的值(比如64MB,可根据实际情况调整)。
修改后的代码如下:
spark = spark(options={'spark.yarn.queue':'shared_adhoc_mid', 'spark.sql.autoBroadcastJoinThreshold': -1, 'spark.kryoserializer.buffer.max': '64m'}) df=spark.read.parquet('path')
补充说明:
如果设置64MB后仍出现相同错误,可以逐步增大该值(比如128m、256m),直到问题解决。参数支持的单位包括b(字节)、k(千字节)、m(兆字节)、g(吉字节),用m或g会更直观。
内容的提问来源于stack exchange,提问作者JG1
相关产品推荐
相关产品推荐

