2016-09-14 4 views
1

Я новичок в искру. И еще новее к Крио. В моем искровом приложении я использую kryo для сериализации объектов значений, но просто использую интерфейс Serializable для объектов, в которых хранятся алгоритмы ... причина в том, что я не хотел регистрировать каждый класс с помощью Kryo.Стратегия Serialization Spark - следует ли использовать Kryo исключительно?

Должен ли я использовать исключительно крио? Смешивается & Соответствие ok (как, что я делаю)?

ответ

1

Когда вы установили spark.serializer в org.apache.spark.serializer.KryoSerializer, все объекты внутри RDD (он не закрывает замыкания *) сериализуются с использованием Kryo. Регистрация классов - это только способ повысить производительность (для зарегистрированных классов требуется только целочисленный id, а не полное имя класса, которое будет храниться с сериализованным объектом). Вы можете проверить relevant section документации Kryo.

Другими словами, если вам интересно, вы должны зарегистрировать все классы, которые должны быть сериализованы в вашей программе, но так или иначе вы уже используете Kryo.


* Затворы сериализуются с использованием стандартных Java сериализации и регистрации в Kryo не влияет, что так, если некоторые объекты должны быть переданы через закрытие вам все равно придется использовать java.io.Serializable.

+0

Фантастический! Я всегда думал, что даже замыкания сериализуются через Крио, что не имеет смысла ... спасибо! – hba