RDD缓存及序列化缓存

JavaSerializer和KryoSerializer对比

Posted by Woods on April 11, 2018

RDD存到磁盘的文件大小是 4.96M。

1. MEMORY_ONLY and not Serializer

memory_only

使用MEMORY_ONLY 方式缓存,RDD占用内存的大小为22.6M。比原文件大了4倍左右。

2.MEMORY_ONLY_SER and JavaSerializer

memory_only_javaser 使用MEMORY_ONLY_SER 并且序列化方式为默认的JavaSerializer方式缓存,RDD占用内存的大小为5.7M。

3.MEMORY_ONLY_SER and KryoSerializer and not registerKryoClasses

memory_only_kryoser_not_reg 使用MEMORY_ONLY_SER 并且序列化方式为未注册的KryoSerializer 方式缓存,RDD占用内存的大小为9.7M。

可见未注册的KryoSerializer 占用内存比JavaSerializer还要大一些

4.MEMORY_ONLY_SER and KryoSerializer and registerKryoClasses

memory_only_kryoser_reg

使用MEMORY_ONLY_SER 并且序列化方式为注册的KryoSerializer 方式缓存,RDD占用内存的大小为3.8M。

通过以上测试可以发现,注册的KryoSerializer 序列化方式所占内存是最少的,也是推荐官方来使用的。