专栏首页Albert陈凯spark中的rdd的持久化

spark中的rdd的持久化

rdd的全称为Resilient Distributed Datasets(弹性分布式数据集) rdd的操作有两种transfrom和action。 transfrom并不引发真正的rdd计算,action才会引发真正的rdd计算。 rdd的持久化是便于rdd计算的重复使用。

在rdd参与第一次计算后,设置rdd的存储级别可以保持rdd计算后的值在内存中。(1)另外,只有未曾设置存储级别的rdd才能设置存储级别,设置了存储级别的rdd不能修改其存储级别。(2)(1)的举例如下:rdd1要经过transform1得到rdd2,然后在一个循环L内rdd2进行transform2和action1。由于trasform操作是不会真正执行的,所以rdd1执行transform1需要在循环L第一次循环的时候触发。如果设置了rdd1的存储级别,那么循环L的第二次循环起,只需要从rdd2开始计算就好了,而不用向第一次循环时从rdd1开始计算。 rdd的持久化操作有cache()和presist()函数这两种方式。


Spark最重要的一个功能,就是在不同操作间,持久化(或缓存)一个数据集在内存中。当你持久化一个RDD,每一个结点都将把它的计算分块结果保存在内存中,并在对此数据集(或者衍生出的数据集)进行的其它动作中重用。这将使得后续的动作(Actions)变得更加迅速(通常快10倍)。缓存是用Spark构建迭代算法的关键。你可以用persist()或cache()方法来标记一个要被持久化的RDD,然后一旦首次被一个动作(Action)触发计算,它将会被保留在计算结点的内存中并重用。Cache有容错机制,如果RDD的任一分区丢失了,通过使用原先创建它的转换操作,它将会被自动重算(不需要全部重算,只计算丢失的部分)。当需要删除被持久化的RDD,可以用unpersistRDD()来完成该工作。此外,每一个RDD都可以用不同的保存级别进行保存,从而允许你持久化数据集在硬盘,或者在内存作为序列化的Java对象(节省空间),甚至于跨结点复制。这些等级选择,是通过将一个org.apache.spark.storage.StorageLevel对象传递给persist()方法进行确定。cache()方法是使用默认存储级别的快捷方法,也就是StorageLevel.MEMORY_ONLY(将反序列化的对象存入内存)。

StorageLevel有五个属性, 分别是:useDisk_是否使用磁盘, useMemory_是否使用内存, useOffHeap_是否使用堆外内存如:Tachyon, deserialized_是否进行反序列化, replication_备份数目。

存储级别的选择 Spark的不同存储级别,旨在满足内存使用和CPU效率权衡上的不同需求。我们建议通过以下的步骤来进行选择: •如果你的RDDs可以很好的与默认的存储级别(MEMORY_ONLY)契合,就不需要做任何修改了。这已经是CPU使用效率最高的选项,它使得RDDs的操作尽可能的快。•如果不行,试着使用MEMORY_ONLY_SER并且选择一个快速序列化的库使得对象在有比较高的空间使用率的情况下,依然可以较快被访问。 • 尽可能不要存储到硬盘上,除非计算数据集的函数,计算量特别大,或者它们过滤 了大量的数据。否则,重新计算一个分区的速度,和与从硬盘中读取基本差不多快。 总结:调用persist()或cache()方法使用的是MEMORY_ONLY存储级别,对于广播变量,使用的是MEMORY_AND_DISK存储级别。如果想使用其他存储级别,可以调用persist(StroageLevel)。MEMORY_AND_DISK存储级别时当内存足够时直接保存到内存队列中,当内存不足时,将释放掉不属于同一个RDD的block的内存。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2019-03-27 CentOS7 Tengine 设置系统自动启动

    作者:温故而知新666 来源:CSDN 原文:https://blog.csdn.net/nimasike/article/details/51889171...

    Albert陈凯
  • R语言的优劣

    https://www.zhihu.com/question/19611094 作者:艾华丰 链接:https://www.zhihu.com/questio...

    Albert陈凯
  • 大数据面试题、经验分享及新手问答整理

    原文地址:http://www.aboutyun.com/thread-9581-1-1.html **笔试类型: ** 1、 java基础类: 2、 li...

    Albert陈凯
  • 工信部:云计算应用落地行动规划有望出台

    10月16日,据上海证券报消息,工信部正在联合其他部委探讨制定具体行业云计算应用落地的行动规划,为云计算产业落地营造更加完善的政策环境。

    CloudBest
  • 云计算,有时候也显得很愚蠢

    关于Adobe放弃中国公司的原因众说纷纭,最近我读到了一篇很有趣的文章,这篇言之凿凿的文章认为市面上的其他说法都说不到点上,归根到底还是Adobe公司“不适应行...

    静一
  • 2015是云计算3.0及云端融合的时代

    最近几年,云计算的应用及落地被谈论了很多,也在很多方面被实践着。黄罡,北大软件所副所长,一直专注于云计算技术领域的研究,在他看来:云计算是新一代IT引擎,从技术...

    静一
  • 世界各国频出政策支持云计算产业

    信息时代,新技术创新能力和新产业发展程度成为各国综合实力的衡量标准。同时,新技术和产业的竞争本质是人才的创新。因此,世界各国,尤其是发达国家,都是针对云计算的技...

    静一
  • 云计算 全球瞩目的战略焦点

    近几年云计算实现了应用领域的转变,引发不少科技公司对这一市场进行争夺。云计算起源于美国,2007年,谷歌和IBM开始在美国大学校园推广基于云计算的大数据服务,此...

    静一
  • 云计算、雾计算、边缘计算、霾计算、海计算......

    我们都很熟悉云计算,一种利用网络实现随时随地、按需、便捷地使用共享计算设施、存储设备、应用程序等资源的计算模式。比如大家熟知云计算系统由云平台、云存储、云终端、...

    安智客
  • 云计算的拓展点

    务院最新常务会议在给企业特别是小微企业送去每年减税400亿大餐的同时,更明确提出要积极支持云计算与物联网、移动互联网等融合发展,催生基于云计算的在线研发设计、教...

    静一

扫码关注云+社区

领取腾讯云代金券