Bitte helfen zu verstehen, wie Kryo Serializer Speicher für seinen Puffer reserviert.Wie Kryo Serializer Puffer in Spark zuweist
Meine Spark-App schlägt bei einem Collect-Schritt fehl, wenn sie versucht, von Mitarbeitern 122 MB Daten an einen Treiber zu sammeln.
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 gezeigt, nachdem ich den Treiber Speicher zu 3Gb und Testamentsvollstrecker Speicher auf 4 GB und eine erhöhte Puffergröße für kryoserializer erhöht haben
conf.set('spark.kryoserializer.buffer.mb', '256')
conf.set('spark.kryoserializer.buffer.max', '512')
Ich glaube (ich Spark-1.3 verwenden) I habe Puffer so eingestellt, dass er groß genug ist, aber meine Spark-App stürzt immer weiter ab. Wie kann ich überprüfen, welche Objekte Kryo-Puffer auf einem Executor verwenden? Gibt es eine Möglichkeit, es aufzuräumen?
Sieht aus wie das Problem ist, dass Spark 1.3 hat keine Eigenschaft 'spark.kryoserializer.buffer.max' - es hat' spark.kryoserializer.buffer.max.mb'. Ich teste die App jetzt mit dem richtigen Eigenschaftensatz. – vvladymyrov
Ich habe ein ähnliches Problem, könnten Sie es lösen? Wenn das so ist, wie? –
@AlbertoBonsanto hat meine Antwort Ihnen bei Ihrem Problem geholfen? – vvladymyrov