spark Kryo serialization failed: Buffer overflow 錯誤


今天在寫spark任務的時候遇到這么一個錯誤,我的spark版本是1.5.1.

1 Exception in thread "main" com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0, required: 124
2     at com.esotericsoftware.kryo.io.Output.require(Output.java:138)
3     at com.esotericsoftware.kryo.io.Output.writeBytes(Output.java:220)
4     at com.esotericsoftware.kryo.io.Output.writeBytes(Output.java:206)
5     at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:29)
6     at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:18)
7     at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:568)
8     at carbonite.serializer$write_map.invoke(serializer.clj:69)

提示是說kryo序列化緩沖區溢出,導致job執行失敗。那好,就把緩沖區改大點好了。搜索了一下答案。

說是可以這么設置:

1 SparkConf sparkConf = new SparkConf();
2 sparkConf.set("spark.kryoserializer.buffer.mb","128"); 
3 JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);

但是在測試的時候,spark提示這個設置在spark1.4之后過時了,建議使用來設置。

1 spark.kryoserializer.buffer

那就改改:

1 SparkConf sparkConf = new SparkConf();
2 sparkConf.set("spark.kryoserializer.buffer","64");
3 JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);

問題解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM