8

我正在尝试使用 kryo 序列化:

kryo.setRegistrationRequired(true);

我不断收到以下错误消息,指出某个类未注册:

java.lang.IllegalArgumentException: Class is not registered: com.my.package.MyClass[]
Note: To register this class use: kryo.register(com.my.package.MyClass[].class);

但是,我确实注册了它:

kryo.register(classOf[MyClass[_]])

当我设置 Log.TRACE() 时,我得到以下输出:

00:11 TRACE: [kryo] Register class ID 51: com.my.package.MyClass (com.esotericsoftware.kryo.serializers.FieldSerializer)

为什么它说它没有注册,当跟踪记录器打印它已经注册时。我找不到任何关于此事的有用文件。有谁之前经历过这个吗?如果有帮助,我正在运行 Apache Spark v0.8.1

4

1 回答 1

13

我弄清楚了问题所在。我将 java 数组语法 [] 误认为 scala 通用语法 []。由于我没有注册 MyClass 数组,因此引发了异常。

所以在java中

kryo.register( MyClass[].class );

和斯卡拉

kryo.register( classOf[ Array[ MyClass[_] ] ] )
于 2014-03-03T19:03:33.650 回答