Spark Serializer Kryo setRegistrationRequired(false)

时间:2017-03-29 16:39:22

标签: scala apache-spark kryo

我在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)

1 个答案:

答案 0 :(得分:0)

试试这个:

conf.set("spark.serializer", org.apache.spark.serializer.KryoSerializer")
conf.set("spark.kryo.registrationRequired", "false")