【发布时间】:2017-03-29 16:39:22
【问题描述】:
我在Scala/Spark 程序中使用weka.mi.MISVM,需要序列化我的内核以便以后重用它们。
为此,我使用Kryo:
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.registerKryoClasses(
Array(classOf[Multiset], classOf[MISVM], classOf[(_,_)],
classOf[Map[_,_]], classOf[Array[_]])
)
...
val patterns: RDD[(Multiset, MISVM)] = ...
patterns.saveAsObjectFile(options.get.out)
(Multiset 是我的对象之一)
序列化运行良好,但是当我尝试读取内核时:
objectFile[(Multiset, MISVM)](sc, path)
我收到此错误:
com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 13994
我认为这是因为我没有注册 MISVM 使用的所有类,并且我读到 Kryo.setRegistrationRequired(false) 可能是一个解决方案,但我不明白如何在我的情况下使用它。
如何定义confKryoSerializer必须使用setRegistrationRequired(false)?
【问题讨论】:
标签: scala apache-spark kryo