根据Kryo文档,在Kryo中注册的类应该在序列化和反序列化期间分配相同的标识符
https://github.com/EsotericSoftware/kryo#registration “在反序列化期间,注册的类必须具有与序列化期间完全相同的ID”
据我所知,内部由spark注册的类和使用方法sparkConf.registerKryoClasses注册的类根据注册顺序自动分配标识符,因此该注册顺序的任何更改都可能会破坏反序列化的可能性。
请帮助我了解Apache Spark中如何处理此问题?
答案 0 :(得分:1)
来自 Kryo 文档:
在反序列化期间,注册的类必须具有与序列化期间完全相同的ID。上面显示的寄存器方法指定下一个可用的最低整数ID,这意味着订单类的注册很重要。
换句话说,在反序列化时具有相同的ID,您需要始终以相同的顺序注册所有类。 Spark中的注册顺序为稳定。
您只需要确保使用sparkConf.registerKryoClasses()
始终以稳定的顺序注册自定义类。
您可以在GitHub上的Spark源代码中查看课程注册的顺序。
答案 1 :(得分:0)
正如您所说,课程的顺序对于版本是稳定的,但是在升级的情况下,注册课程的数量和顺序会有所不同