MAPREDUCE服务 MRS-Spark应用开发建议:在对性能要求比较高的场景下,可以使用Kryo优化序列化性能

时间:2024-09-06 10:03:29

在对性能要求比较高的场景下,可以使用Kryo优化序列化性能

Spark提供了两种序列化实现:

org.apache.spark.serializer.KryoSerializer:性能好,兼容性差

org.apache.spark.serializer.JavaSerializer:性能一般,兼容性好

使用:conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

为什么不默认使用Kryo序列化?

Spark默认使用的是Java的序列化机制,也就是ObjectOutputStream/ObjectInputStream API来进行序列化和反序列化。但是Spark同时支持使用Kryo序列化库,Kryo序列化类库的性能比Java序列化类库的性能要高很多。官方介 绍,Kryo序列化机制比Java序列化机制,性能高10倍左右。Spark之所以默认没有使用Kryo作为序列化类库,是因为Kryo要求要注册所有需要进行序列化的自定义类型,因此对于开发者来说,这种方式比较麻烦。

support.huaweicloud.com/devg-rule-mrs/mrs_07_450052.html