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