使用kryo序列化注册类的含义

时间:2017-06-19 14:36:03

标签: java apache-spark serialization kryo

我不明白为kryo序列化注册一个类是什么意思。 为了给出一些背景知识,link在这里说

  

Kryo不支持所有Seri​​alizable类型,并且要求您提前注册您将在程序中使用的类以获得最佳性能。

同样,我不明白注册课程的含义是什么?序列化代码不是静态的,因为您应用相同的逻辑来序列化所有类型的对象。如何在高级中提及将被序列化的类在以后有用?

谢谢!

1 个答案:

答案 0 :(得分:2)

Kyro docs提及预先注册是不必要的,但是在第一次遇到类时性能提高,不需要序列化类的名称;可以使用在注册期间生成的,这也导致使用的字节更少。

摘录:

  

当Kryo写出一个对象的实例时,首先它可能需要写出一些标识对象类的东西。默认情况下,将写入完全限定的类名,然后写入对象的字节。使用可变长度int写入同一对象图中的该对象类型的后续外观。编写类名有点效率低,因此可以事先注册类: