Apache Spark:Kryo中的类注册顺序

时间:2015-09-30 08:27:45

标签: apache-spark kryo

根据Kryo文档,在Kryo中注册的类应该在序列化和反序列化期间分配相同的标识符

https://github.com/EsotericSoftware/kryo#registration “在反序列化期间,注册的类必须具有与序列化期间完全相同的ID”

据我所知,内部由spark注册的类和使用方法sparkConf.registerKryoClasses注册的类根据注册顺序自动分配标识符,因此该注册顺序的任何更改都可能会破坏反序列化的可能性。

请帮助我了解Apache Spark中如何处理此问题?

2 个答案:

答案 0 :(得分:1)

来自 Kryo 文档:

  

在反序列化期间,注册的类必须具有与序列化期间完全相同的ID。上面显示的寄存器方法指定下一个可用的最低整数ID,这意味着订单类的注册很重要。

换句话说,在反序列化时具有相同的ID,您需要始终以相同的顺序注册所有类。 Spark中的注册顺序为稳定

您只需要确保使用sparkConf.registerKryoClasses()始终以稳定的顺序注册自定义类。

您可以在GitHub上的Spark源代码中查看课程注册的顺序。

答案 1 :(得分:0)

正如您所说,课程的顺序对于版本是稳定的,但是在升级的情况下,注册课程的数量和顺序会有所不同