spark Kryo serialization failed:Buffer overflowエラー

2582 ワード

今日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はこれをspark 1に設定することを提示した.4以降は古いので、設定に使うことをお勧めします.
1 spark.kryoserializer.buffer

では、変更します.
1 SparkConf sparkConf = new SparkConf();
2 sparkConf.set("spark.kryoserializer.buffer","64");
3 JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);

問題が解決する.
 
転載先:https://www.cnblogs.com/fillPv/p/5045928.html