Kryo序列化拒绝注册课程

时间:2014-02-25 22:17:03

标签: scala kryo

我正在尝试使用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

1 个答案:

答案 0 :(得分:11)

我弄清楚问题是什么。我错误地将scala通用语法[]的java数组语法[]。由于我没有注册MyClass数组,因此抛出异常。

所以在java中

kryo.register( MyClass[].class );

和scala

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