我是靠谱客的博主 炙热帆布鞋,最近开发中收集的这篇文章主要介绍Spark性能优化(5)—— 使用序列化的持久化级别1 使用序列化的持久化级别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 使用序列化的持久化级别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部