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 ответ
Решение
Я понял, в чем проблема. Я ошибочно принял синтаксис массива java [] за общий синтаксис scala []. Возникало исключение, так как я не зарегистрировал массив MyClass.
Так в яве
kryo.register( MyClass[].class );
И скала
kryo.register( classOf[ Array[ MyClass[_] ] ] )