spark性能调优之四:kryo序列化
spark支持使用kryo序列化机制。kryo序列化机制,比默认的java序列化机制,速度要快,序列化后的数据要更小,大概是java序列化机制的1/10,所以kryo序列化优化后,可以让网络传输的数据变少,在集群中耗费的内存资源大大减少。
kryo序列化机制,一旦启用以后,会生效的几个地方:
1、算子函数中使用到的外部变量
2、持久化RDD时进行序列化,StorageLevel.MEMORY_ONLY_SER
3、shuffle
那么如何设置kryo序列化呢?
第一步,在sparkconf中设置:SparkConf.set("spark.serializer","org.apache.spark.serializer.KryoSerializer")
第二步,注册你使用到的,需要通过kryo序列化的一些自定义类,SparkConf.registerKryoClasses(),项目中使用SparkConf.set("spark.serializer","org.apache.spark.serializer.KryoSerializer").registerKryoClasses(new Class[]{CategorySortKey.class})