2014-02-25 38 views
7

我試圖使用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

回答

10

我想出了問題所在。我誤解了scala通用語法[]的java數組語法[]。由於我沒有註冊MyClass數組,因此引發了異常。

所以在java中

kryo.register(MyClass[].class); 

和Scala

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

究竟我有同樣的問題。這工作。謝謝! –