概述
1 使用序列化的持久化级别
- 处理对多次使用的 RDD 进行持久化操作之外,还可以进一步优化其性能。因为很可能,RDD 的数据时持久化到内存,或者磁盘中的。那么,此时如果内存大小不是特别充足,完全可以使用序列化的持久化级别,比如
MEMORY_ONLY_SER
,MEMORY_AND_DISK_SER
等。使用RDD.persist(StorageLevel.MEMORY_ONLY_SER)
- 这样的话,将数据序列化之后,再持久化,可以大大减少对内存的消耗。此时,如果数据量小了之后,如果要写入磁盘,那么磁盘IO 性能消耗也比较小。
- 对 RDD 持久化序列化之后,RDD 的每个 partition 的数据,都是序列化为一个巨大的字节数组。这样,对于内存消耗就小了,但是唯一缺点就是,获取 RDD 数据时,需要对其进行反序列化,会增大其性能开销;
- 因此,对于序列化的持久化级别,还可以进一步优化,也就是使用
Kryo
序列化类库,这样可以获得更快的序列化速度,并且占用更少的内存空间。但是,如果RDD 的元素,是自定义类型的话,在 Kryo 中提前注册自定义类型
最后
以上就是炙热帆布鞋为你收集整理的Spark性能优化(5)—— 使用序列化的持久化级别1 使用序列化的持久化级别的全部内容,希望文章能够帮你解决Spark性能优化(5)—— 使用序列化的持久化级别1 使用序列化的持久化级别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复