2016-09-14 42 views
1

我是新来的火花。甚至更新Kryo。在我的Spark应用程序中,我使用kryo来序列化值对象,但只是使用Serializable接口来存放算法的对象......原因是我不想使用Kryo注册每个类。Spark序列化策略 - 我应该独家使用Kryo吗?

我应该独家使用kryo吗? 混合&匹配好(就像我在做什么)?

回答

1

当您将spark.serializer设置为org.apache.spark.serializer.KryoSerializer时,RDD中的所有对象(不包括闭包*)都使用Kryo序列化。类注册只是提高性能的一种方法(注册类只需要一个整数id而不是一个完全限定的类名与序列化对象一起存储)。详情请查阅Kryo文档的relevant section

换句话说,如果你关心性能,你应该注册所有必须在你的程序中序列化的类,但这种或那种方式已经使用Kryo。


*瓶盖使用在KRYO标准的Java序列化和登记的,不影响,所以如果有些对象是通过封闭来传递你还是要用java.io.Serializable序列化。

+0

太棒了!我一直认为,即使关闭是通过Kryo序列化,没有任何意义......谢谢! – hba