【问题标题】:Kryo java.lang.UnspportedOperationExceptionKryo java.lang.UnspportedOperationException
【发布时间】:2017-02-09 08:28:54
【问题描述】:

我正在尝试在 spark 中为 the SAMRecord class 使用 Kryo,但在运行时出现错误。我不明白这个错误是什么意思,谁能解释一下?为了让 Kryo 使用它,我需要改变什么?问题在于List<AlignmentBlock> 类型的成员变量mAlignmentBlocks。 Kryo 对此类列表有意见吗?

请注意,我已使用以下代码注册了 AlignmentBlockSAMRecord

kryo.register(classOf[AlignmentBlock])
kryo.register(classOf[SAMRecord])

我得到的错误是这样的:

com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationException 序列化跟踪: mAlignmentBlocks (htsjdk.samtools.SAMRecord) 在 com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626) 在 com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221) 在 com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729) 在 com.twitter.chill.Tuple2Serializer.read(TupleSerializers.scala:42) 在 com.twitter.chill.Tuple2Serializer.read(TupleSerializers.scala:33) 在 com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729) 在 org.apache.spark.serializer.KryoDeserializationStream.readObject(KryoSerializer.scala:228) 在 org.apache.spark.serializer.DeserializationStream.readValue(Serializer.scala:171) 在 org.apache.spark.serializer.DeserializationStream$$anon$2.getNext(Serializer.scala:201) 在 org.apache.spark.serializer.DeserializationStream$$anon$2.getNext(Serializer.scala:198) 在 org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73) 在 scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371) 在 scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) 在 org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:32) 在 org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:39) 在 org.apache.spark.util.collection.ExternalAppendOnlyMap.insertAll(ExternalAppendOnlyMap.scala:152) 在 org.apache.spark.Aggregator.combineValuesByKey(Aggregator.scala:45) 在 org.apache.spark.shuffle.BlockStoreShuffleReader.read(BlockStoreShuffleReader.scala:89) 在 org.apache.spark.rdd.ShuffledRDD.compute(ShuffledRDD.scala:98) 在 org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) 在 org.apache.spark.rdd.RDD.iterator(RDD.scala:27​​0) 在 org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 在 org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306)

【问题讨论】:

    标签: java scala apache-spark kryo bigdata


    【解决方案1】:

    您正在调用实现接口的类的方法,但该方法的实现不存在。

    【讨论】:

    • 能否详细说明。我没听懂你说什么。哪个类的实现不存在?你的意思是 List 类?如果是这样,我该如何添加?
    • 我不知道 kryo,现在我的解释可以是抽象的......找到了你调用的方法,这给了你这个例外。查看它的源代码。我不能像我在手机上那样做自己......
    • 似乎在 kryo 中。对不起,我可以帮助你更多,因为不知道更多关于 kryo。把代码放在你调用 kryo 序列化的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多