【问题标题】:Spark Serializer Kryo setRegistrationRequired(false)Spark 序列化器 Kryo setRegistrationRequired(false)
【发布时间】: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


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 谢谢我收到一个错误 notebook:1: error: not found: value conf 。需要导入什么?
    • @Sade conf 这里是 spark 的配置,无论你用什么方式得到 spark 配置。 spark().conf() 或 spark().configuration() 之类的东西
    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多