0%

RDD序列化

RDD序列化

算子以外的操作都是在Driver端执行的,算子内的都是在Executor端执行的,而在进行Driver端向Executor端传值时,就需要进行序列化,虽然Java序列化也可以完成,但是产生的字节过多,导致数据传输过慢,Spark在2.0开始支持Kryo序列化机制,速度是Serializable的10倍,默认不配置的情况下使用的是Java序列化,可以进行配置为Kryo序列化

1
2
3
4
5
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("kryo")
// 默认为org.apache.spark.serializer.JavaSerializer
// 如果注册了org.apache.spark.serializer.KryoSerializer
.set("spark.serializer","org.apache.spark.serializer.KryoSerializer")
.registerKryoClasses(Array(classOf[Teacher]))