Kryo serialization refuses to register class

与世无争的帅哥 提交于 2019-11-28 03:46:26

问题


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[_]])

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)

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


回答1:


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.

So in java

kryo.register( MyClass[].class );

And scala

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


来源:https://stackoverflow.com/questions/22027451/kryo-serialization-refuses-to-register-class

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!