Каковы плюсы и минусы сериализации java и сериализации kryo?

В Spark по умолчанию используется java-сериализация, если kryo настолько эффективен, почему он не установлен по умолчанию. Есть ли какие-то недостатки использования kryo или в каких сценариях мы должны использовать сериализацию kryo или java?


person supernatural    schedule 20.11.2019    source источник


Ответы (2)


Вот комментарий из документации:

Kryo значительно быстрее и компактнее, чем сериализация Java (часто до 10x), но не поддерживает все типы Serializable и требует, чтобы вы заранее регистрировали классы, которые вы будете использовать в программе, для лучшей производительности.

Таким образом, он не используется по умолчанию, потому что:

  1. Не каждый java.io.Serializable поддерживается "из коробки" - если у вас есть собственный класс, расширяющий Serializable, он все равно не может быть сериализован с помощью Kryo, если не зарегистрирован.
  2. Необходимо зарегистрировать пользовательские классы.

Примечание согласно документации:

Spark автоматически включает сериализаторы Kryo для многих часто используемых базовых классов Scala, описанных в AllScalaRegistrar, из библиотеки Twitter chill. .

person Vladislav Varslavans    schedule 20.11.2019
comment
Не все сериализуемые поддерживаются - не понял эту часть @Vladislav Varslavans (не могли бы вы привести какой-нибудь пример), не регистрация класса не делает его сериализуемым - person supernatural; 20.11.2019
comment
Я обновил свой ответ. Надеюсь, это внесет ясность. - person Vladislav Varslavans; 20.11.2019
comment
Регистрация класса накладных расходов? Я имею в виду, что пока у меня улучшаются память и время, у меня нет проблем с регистрацией 10 классов. Или я что-то неправильно понял? - person paradocslover; 09.05.2021
comment
Не думаю, что это накладные расходы. По крайней мере, в документации об этом ничего не говорится. - person Vladislav Varslavans; 09.05.2021

Kryo Pros: потребление памяти низкое

Время kryo не работало для меня, как это было, когда я имел дело с протобуфами Google. Вот когда мне пришлось сначала зарегистрировать прото-класс

https://mvnrepository.com/artifact/de.javakaffee/kryo-serializers/0.45

person Pranav Sawant    schedule 20.11.2019