Что могло вызвать «com.esotericsoftware.kryo.KryoException: java.lang.NullPointerException»? При сериализации исключения Java - PullRequest
0 голосов
/ 29 августа 2018

Когда я выполняю следующий простой код Spark:

val trial = Try {
  require(
    requirement = false,
    "error!"
  )
}
val ee = trial.failed.get

sparkContext.parallelize(Seq(ee))
  .collect()

Я получил следующую ошибку:

Job aborted due to stage failure: Task 3 in stage 0.0 failed 4 times, most recent failure: Lost task 3.3 in stage 0.0 (TID 6, 10.0.9.145, executor 1): com.esotericsoftware.kryo.KryoException: java.lang.NullPointerException
Serialization trace:
suppressedExceptions (java.lang.IllegalArgumentException)
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:101)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:518)
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:628)
    at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:366)
    at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:307)
    at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:628)
    at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:315)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:386)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
    at java.util.Collections$UnmodifiableCollection.size(Collections.java:1030)
    at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:83)
    at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40)
    at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:552)
    at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80)
    ... 10 more

Видимо, эта ошибка вызвана тем, что элемент suppressedExceptions, который я обнаружил пустым при отладке. Кроме того, я не могу найти аналогичных ошибок в Интернете. В чем причина этой ошибки и что я должен сделать, чтобы ее избежать?

...