Wie Kryo-Serialisierung stellt Puffer in Spark

Bitte helfen zu verstehen, wie Kryo-Serialisierungsprogramm reserviert Speicher für den Puffer.

Meine Spark-app nicht auf einem sammeln Schritt, wenn er versucht zu sammeln über 122Mb von Daten zu einem Treiber von Arbeitnehmern.

com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0, required: 57197
    at com.esotericsoftware.kryo.io.Output.require(Output.java:138)
    at com.esotericsoftware.kryo.io.Output.writeBytes(Output.java:220)
    at com.esotericsoftware.kryo.io.Output.writeBytes(Output.java:206)
    at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:29)
    at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:18)
    at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:549)
    at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:312)
    at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:293)
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:568)
    at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:161)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)

Diese Ausnahme wird angezeigt, nachdem ich erhöht habe der Fahrer den Speicher auf 3Gb und Testamentsvollstrecker Speicher um 4Gb und erhöht Puffergröße für kryoserializer (ich bin mit der Funke 1.3)

conf.set('spark.kryoserializer.buffer.mb', '256')
conf.set('spark.kryoserializer.buffer.max', '512')

Ich denke, ich habe eingestellt, Puffer groß genug sein, aber mein spark app stürzt immer ab.
Wie kann ich überprüfen, welche Objekte werden mithilfe von Kryo-Puffer auf ein Testamentsvollstrecker?
Ist es Weg, um es zu säubern?

Sieht aus wie das problem ist, dass die Spark-1.3 nicht-Eigenschaft spark.kryoserializer.buffer.max - es hat spark.kryoserializer.buffer.max.mb . Ich Teste die app jetzt mit der richtigen Eigenschaft festgelegt.
Ich habe ein ähnliches problem, konntest du es lösen? wenn ja ... wie?
habe meine Antwort Ihnen geholfen, mit Ihrem Problem?
vvladymyrov Es nicht, ich bekomme dieses problem jedes mal, wenn ich laufen NaiveBayes passen auf ein großes dataset, in dem die Funktionen sind in form von SparseVectors mit Millionen von features

InformationsquelleAutor vvladymyrov | 2015-08-11

Schreibe einen Kommentar