spark的数据序列化
Java serialization:默认(slow、large)
Kryo serialization:分为注册和没注册两种
配置方法:
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
//一般写到spark-default.conf中,不写在代码里。
- register the classes:(快、紧凑)
conf.registerKryoClasses(Array(classOf[MyClass1], classOf[MyClass2]))
//写到代码中,注册自定义的类,有几个注册几个。
- not register:(也能work,但相对要慢、占用空间更大)
测试:在webUI的Storage中比较四种cache的数据大小,差别很大!
1)data=>rdd.cache() MEMORY_ONLY(默认)
2)data=>rdd.cache() MEMORY_ONLY_SER
3)data=>rdd.cache() KryoSerializer + MEMORY_ONLY_SER
4)data=>rdd.cache() KryoSerializer + register + MEMORY_ONLY_SER