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[_] ] ] )
Другие вопросы по тегам