我正在尝试使用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
我弄清楚了问题所在。我把java数组语法[]误认为是scala通用语法[]。由于未注册MyClass数组,因此引发了异常。
所以在java中
kryo.register( MyClass[].class );
和斯卡拉
kryo.register( classOf[ Array[ MyClass[_] ] ] )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句