作用
spark中序列化发生在rdd的缓存、shuffle的阶段,是一个比较频繁的操作。但是如果没有特别设置,spark在进行序列化时会使用Java原生的序列化方式,也就是让序列化的类实现java.io.Serializable
接口。但是原生的java序列化方式效率很低,默认的writeObject
和readObject
基本不会被重写,因此需要有其他能够提升序列化部分的效率的方式。
在spark的官方文档中,提供了两种序列化的方式,分别是Java Serialization
和Kryo Serialization
。官方文档中对Kryo的说明是:
Kryo serialization: Spark can also use the Kryo library (version 4) to serialize objects more quickly. Kryo is significantly faster and more compact than Java serialization (often as much as 10x), but does not support all Serializable types and requires you to register the classes you’ll use in the program in advance for best performance.
看了下,说Kryo序列化的速度是java序列化速度的10x。值得一试。
如何配置
有两种办法:
1、通过sparkConf直接对类进行注册;
SparkConf sparkConf = new SparkConf();