我在weka.mi.MISVM
程序中使用Scala/Spark
,需要序列化我的内核以便以后重用它们。
为此,我使用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)
可能是一个解决方案,但我不明白如何使用在我的情况下。
如何定义conf
KryoSerializer
必须使用setRegistrationRequired(false)
?
答案 0 :(得分:0)
试试这个:
conf.set("spark.serializer", org.apache.spark.serializer.KryoSerializer")
conf.set("spark.kryo.registrationRequired", "false")