2016-09-30 62 views
0

我想在火花中使用Kryo作为the SAMRecord class,但在运行时显示错误。我不明白这个错误意味着什么,任何人都可以解释?我需要改变Kryo的工作方式吗?问题出在List<AlignmentBlock>类型的成员变量mAlignmentBlocks。 Kryo对这样的列表有问题吗?Kryo java.lang.UnspportedOperationException

,我用下面的代码注册两个AlignmentBlockSAMRecord注:

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

而我得到的错误是这样的:

com.esotericsoftware.kryo.KryoException:JAVA。 lang.UnsupportedOperationException 序列化跟踪: mAlignmentBlocks(htsjdk.samtools.SAMRecord) at com.esotericsoftware.kryo.serializers.FieldSerializer $ ObjectField.read(Field Serializer.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.DeserializationStream.readValue(Serializer.scala:171)上的org.apache.spark.serializer.KryoDeserializationStream.readObject(KryoSerializer.scala:228) (org.apache.spark.serializer.DeserializationStream中的 ) $ anon $ 2.getNext(Serializer.scala:201) at org.apache.spark.serializer .DeserializationStream $$ anon $ 2.getNext(Serializer.scala:198) at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73) at scala.collection.Iterator $$ anon $ 13.hasNext(Iterator .scala:371) at scala.collection.Iterator $$ anon $ 11.hasNext(Iterator.scala:327) at org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:32) at org.apache .spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:39) at org.apache.spark.util.collection.ExternalAppendOnlyMap.insertAll(ExternalAppendOnlyMap.scala:152) at org.apache.spark.Aggregator.combineValuesByKey(Aggregator.scala :45) at org.apache.spark.shuffle.BlockStoreShuffleReader.read(BlockStoreShuffleReader.scala:89) at org.apache.spark.rdd.ShuffledRDD.compute(ShuffledRDD.scala:98) at org.apache.spark.rdd.RDD.computeOrReCheckCheck(RDD.scala:306) at org.apache.spark.rdd.RDD .iterator(RDD.scala:270) at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) at org.apache.spark.rdd.RDD.computeOrReCheckCheck(RDD.scala:306)

回答

0

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

+0

请您详细说明。我不明白你的意思。实施哪一类不存在?你的意思是List 类?如果是这样,我该如何补充? – pythonic

+0

我不知道kryo,我现在说我的解释可以是抽象的...发现你调用的方法,这是给你这个例外。看到它的源代码。我不能在自己的手机上做我自己... – Tokazio

+0

似乎在克里奥。对不起,我可以帮助你更多,因为不知道更多关于克里奥。把代码放到你调用kryo的地方进行序列化 – Tokazio