了解Kryo序列化缓冲区溢出错误

问题描述 投票:1回答:1

我试图理解以下错误,我在客户端颂歌中运行。

 org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: 61186304. To avoid this, increase spark.kryoserializer.buffer.max value.
        at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:300)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:313)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

基本上我试图缩小问题的范围。我的理解是正确的,这个错误发生在火花驱动程序方面(我在aws emr所以我相信这将在master上运行)?我应该看看spark.driver.memory

scala apache-spark kryo
1个回答
1
投票

不,问题是kryo的缓冲区空间不足。您应该在属性文件中调整spark.kryoserializer.buffer.max,或者在spark-submit命令中使用--conf "spark.kryoserializer.buffer.max=128m"。 128米应该足够大。

© www.soinside.com 2019 - 2024. All rights reserved.