我正在尝试使用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
答案 0 :(得分:11)
我弄清楚问题是什么。我错误地将scala通用语法[]的java数组语法[]。由于我没有注册MyClass数组,因此抛出异常。
所以在java中
kryo.register( MyClass[].class );
和scala
kryo.register( classOf[ Array[ MyClass[_] ] ] )