Kryo 序列化拒绝注册类 [英] Kryo serialization refuses to register class

查看:78
本文介绍了Kryo 序列化拒绝注册类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to use kryo serialization with:

kryo.setRegistrationRequired(true);

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

I keep getting the following error saying that a certain class is not registered:

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

但是,我确实注册了它:

However, I do register it:

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

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

When I set Log.TRACE() I get the following output:

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

为什么trace logger打印它已经注册了,为什么说它没有注册.我找不到有关此事的任何有用文档.有谁之前经历过这个吗?如果它有帮助,我正在运行 Apache Spark v0.8.1

Why does it say it is not registered, when the trace logger prints that it has been registered. I cannot find any useful documentation on the matter. Has anyone experienced this before? If it helps i'm running Apache Spark v0.8.1

推荐答案

我想出了问题所在.我将 java 数组语法 [] 误认为是 Scala 通用语法 [].由于我没有注册 MyClass 数组,因此正在抛出异常.

I figured out what the issue was. I was mistaking the java array syntax [] for the scala generic syntax []. The exception was being being thrown since I did not register an array of MyClass.

所以在java中

kryo.register( MyClass[].class );

和scala

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

这篇关于Kryo 序列化拒绝注册类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆