При использовании Kryo обычно рекомендуется регистрировать классы, которые вы собираетесь сериализовать, чтобы имя класса не нужно было включать в сериализованные данные.
Но в иерархии классов фактический класс реализации может быть неочевидным. Например, если у меня есть набор данных Spark, содержащий Vector, конкретный класс этих объектов может быть либо DenseVector, либо SparseVector.
Когда я регистрируюсь на занятия в Kryo, должен ли я:
- Зарегистрируйте класс в соответствии с объявленным типом набора данных (вектор)
- Зарегистрируйте конкретные классы (DenseVector и SparseVector)
- Все вышеперечисленное на всякий случай?
Дополнительный вопрос: если вектор появляется как поле в классе кортежа или случая, нужно ли вам также регистрировать продукт (например, Tuple2[Vector, Int])?