我正在尝试运行Spark(Java)代码并收到错误
org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: 27".
其他帖子建议将缓冲区设置为最大值。当我尝试将最大缓冲区值设置为512MB时,我得到了错误
java.lang.ClassNotFoundException: org.apache.spark.serializer.KryoSerializer.buffer.max', '512'
我怎样才能解决这个问题?
4条答案
按热度按时间iq0todco1#
属性名称正确,
spark.kryoserializer.buffer.max
,值应包括单位,因此在您的情况下为512m。此外,根据您设置配置的位置,您可能必须写入
--conf spark.kryoserializer.buffer.max=512m
,例如,使用spark-submit
或在Oozie工作流操作的<spark-opts>...</spark-opts>
内。kmbjn2e32#
请尝试使用“
spark.kryoserializer.buffer.max.mb
“、“512
“,而不是**spark.kryoserializer.buffer.max
"、“512MB
**”nimxete23#
你可以在创建spark会话时在spark配置中设置为
也可以将spark提交命令作为
ttcibm8c4#
这是一个老问题,但第一次击中当我谷歌,所以回答这里帮助他人。
对于Spark 3.2(在Azure Synapse环境中,但不确定这是否重要),我尝试了所有这些组合,但唯一能将大Spark DataFrame转换为Pandas()的组合是
spark.kryoserializer.buffer.max=512
。数字后面没有字母,结尾没有“.mb”。