持久化作原因及用途

  • 默认是在内存中持久化.

  • 当您持久化RDD时,每个节点都将它计算的所有分区存储在内存中,并在该数据集(或从该数据集派生的数据集)上的其他操作中重用这些分区。

  • 这使得未来的行动更快(通常是10倍以上)。缓存是迭代算法和快速交互使用的关键工具。

  • 可以使用persist()或cache()方法将RDD标记为持久化。

  • 第一次在action中计算它时,它将保存在节点上的内存中。

  • Spark的缓存是容错的——如果RDD的任何分区丢失,它将自动使用最初创建它的转换重新计算。

持久化级别

  • 每个持久化的RDD都可以使用不同的存储级别进行存储,例如,允许您在磁盘上持久化数据集,将其持久化到内存中,但作为序列化的Java对象(以节省空间),跨节点复制它。这些级别是通过向persist()传递一个StorageLevel对象(Scala、Java、Python)来设置的。cache()方法是使用默认存储级别的简写,它是仅限StorageLevel.MEMORY(将反序列化的对象存储在内存中)。

有以下级别可以选择

如何选择存储级别

Spark的存储级别旨在提供内存使用CPU效率之间的不同权衡。我们建议通过以下过程选择一个:

如果您的RDD适合默认存储级别(仅限内存),那么就让它们这样。这是CPU效率最高的选项,允许RDD上的操作尽可能快地运行。

如果没有,请尝试使用MEMORY-ONLY\u-user并选择一个快速序列化库,以使对象更节省空间,但访问速度仍然相当快。(Java和Scala)

不要溢出到磁盘,除非计算数据集的函数很昂贵,或者它们过滤了大量数据。否则,重新计算一个分区可能和从磁盘读取它一样快。

如果您希望快速故障恢复(例如,如果使用Spark服务来自web应用程序的请求),请使用复制的存储级别。所有存储级别都通过重新计算丢失的数据来提供完全的容错能力,但是复制的存储级别允许您继续在RDD上运行任务,而无需等待重新计算丢失的分区。

删除缓存

Spark自动监视每个节点上的缓存使用情况,并以最近最少使用(least recent used,LRU)的方式删除旧的数据分区。如果要手动删除RDD,而不是等待它从缓存中退出,请使用 RDD.unpersist()方法。请注意,此方法在默认情况下不会阻止。要在释放资源之前阻止,请在调用此方法时指定blocking=true。

应用

在写代码中,可以用persist或者cache方法,cache方法就是调用了persist方法.

//这二者的默认级别都是MEMORY_ONLY
rdd.cache()//cache方法不可以带参数
rdd.persist()
//persist方法还可以自定义指定级别
rdd.persist(StorageLevel.MEMORY_AND_DISK)
rdd.persist(StorageLevel.MEMORY_ONLY_SER)
//cache和persist都可以用unpersist来取消
rdd.unpersist()

参考

RDD中cache和persist的区别_helloxiaozhe的博客-CSDN博客

spark 持久化机制入门相关推荐

  1. spark 存储机制详解

    我们知道spark可以将运行过的RDD存储到内存上, 并在需要的时候重复利用. 那么spark是怎么完成这些工作的, 本文将通过分析源码来解释RDD的重复利用过程. 在上一篇文章解释了spark的执行 ...

  2. Redis学习之持久化机制

    持久化机制 上小学的时候,我们每天都要做数学题,为了加快做题的速度,我们不可能每次遇到8 x 8都要查看乘法口诀表(最主要的原因是考试的时候,老师不允许),所以我们会通过死记硬背的方式,将8 x 8 ...

  3. Spark工作原理入门

    Spark工作原理入门 文章目录 Spark工作原理入门 1.功能概要 基本描述 运用场景 实际使用 2.模块组成 HDFS MLlib Mesos Tachyon GraphX Spark SQL ...

  4. 深入理解Redis的持久化机制和原理

    Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis ...

  5. redis的通用命令 || redis持久化机制:(RDB  ||  AOF)

    通用命令 1. keys * : 查询所有的键         2. type key : 获取键对应的value的类型         3. del key:删除指定的key value 持久化   ...

  6. Redis数据持久化机制AOF原理分析一---转

    http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...

  7. Redis提供的持久化机制(RDB和AOF)

    Redis提供的持久化机制 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却 ...

  8. Redis持久化机制 -全量同步与增量同步的区别

    全量同步与增量同步的区别 全量同步:就是每天定时(避开高峰期)或者采用一个周期实现将数据拷贝到一个地方也就是Rdb存储. 增量同步:比如采用对行为的操作实现对数据的同步,也就是AOF. 全量与增量的比 ...

  9. handler消息机制入门

    handler消息机制入门 为什么要用handle? 我们在网络上读取图片信息时,是不能把耗时操作放在主线程里面的,当我们在子线程中获取到了图片的消息的时候,我们就需要把这个数据传给主线程. 而直接使 ...

最新文章

  1. eclipse 代码中突然出现特殊字符
  2. 微博运营与微博营销最易犯的20种错误,你犯了吗?
  3. 零基础python必背代码-零基础入门学习python 96集全
  4. jstl sql标签使用
  5. 【tensorflow】tensorflow -gpu安装及jupyter环境更改
  6. 1445.32php,nginx实现mysql的负载均衡
  7. 神舟电脑冲击创业板失败 首发未获证监会通过
  8. socket可以写成单例嘛_精读设计模式 Singleton 单例模式
  9. ELK之ES-Logstash-Kibana互联
  10. 根据年月查询每月数据并渲染到页面,支持数据的展示与折叠隐藏
  11. winhex 比较详细的图文使用教程
  12. 如何在开始菜单创建快捷方式
  13. 例3.1 有人用温度计测量出用华氏法表示的温度,今要求把它转换为以摄氏法表示的温度。
  14. zend抽象语法树AST流程解析
  15. 安装mysql提示oxc000007b_重装win7系统黑屏提示oxc000007b怎么办
  16. msfvenom生成木马的简单利用
  17. [css] 你是怎么选择resetting和normalizing的?为什么?
  18. 对图像处理中的面向对象和基于基元的理解
  19. ublox_f9p 代码中接入别人编译好的连接库(PPP定位)
  20. Linux时间子系统之Tick层

热门文章

  1. bigdecimal乘法_Java面试题之BigDecimal比较大小问题
  2. Ubuntu硬盘的挂载(临时、永久挂载)
  3. 喜欢熬夜的人注意!出现3大迹象时,说明身体极度危险!
  4. 总觉得学习效率低,看了这篇瞬间清醒了!
  5. dfs dtft dft fft
  6. matlab仿真限幅发散,GSM通信系统性能分析与MATLAB仿真.doc
  7. chart控件做实时曲线显示_Spark+Kafka+WebSocket+eCharts实时分析-完全记录(5)
  8. bootstrap日期控件 只显示 年月
  9. android 透明栏,Android状态栏透明(沉浸式效果)
  10. abaqus python 读取文件_通过Python脚本从Abaqus中的excel文件导入幅度数据