RDD的持久化

RDD 的数据是过程数据,因此需要持久化存储;

RDD之间进行相互迭代的计算,新的RDD的生成代表着旧的RDD的消失;这样的特性可以最大化地利用资源,老旧地RDD可以及时地从内存中清理,从而给后续地计算腾出空间;

如下图所示:

rdd3地第一次使用是在构建rdd4的时候,构建完rdd4之后rdd3就不存在了;而第二次使用rdd3的时候,由于其已经不存在,需要根据RDD的血缘关系,从rdd重新执行,构建出来rdd3,供rdd5使用;

RDD的缓存

可以通过缓存技术,将RDD存储在内存中或者磁盘上,这样就不用重复构建rdd了;

常用的缓存API如下:

一般使用rdd.persist(StorageLevel.MEMORY_AND_DISK),优先缓存在磁盘上;

如果是内存比较小的集群,可以只缓存到磁盘上;

手动清理缓存的API:rdd.unpersist()

缓存的特点:缓存被认为是不安全的,因此保留RDD之间的血缘关系

因为缓存的数据有丢失的风险,内存中的缓存可能由于断电/空间不足被清理;磁盘上的缓存可能由于磁盘损坏丢失等等,所以需要保留血缘关系,从而避免数据丢失;

RDD的缓存是如何保存的?

采取分散存储:RDD的每个分区自行将其数据保存在其所在的Executor内存和磁盘上

RDD的CheckPoint

CheckPoint也是保存RDD的一种机制,但只支持磁盘存储;

与缓存相比,CheckPoint被认为是安全的,也不会保存RDD之间的血缘关系;

CheckPoint的存储:

集中收集存储:CheckPoint集中收集各个分区的数据存储在HDFS上;

API:

# 设置存储路径,如果是local模式,可以选用本地文件系统
# 如果是集群模式,一定要设置hdfs路径
sc.setCheckpointDir(path)
# 存储
rdd.checkpoint()
# 清除
rdd.unpersist()

缓存和CheckPoint的对比

Cache 和 CheckPoint的性能对比:

Cache性能更好, 因为是分散存储, 各个Executor并行执行, 效率高, 可以保存到内存中(占内存),更快

CheckPoint比较慢, 因为是集中存储, 涉及到网络IO, 但是存储到HDFS上更加安全(多副本)

注意:Cache 和 CheckPoint两个API都不是action类型的,如果要想正常工作,后面必须有action类型的算子;

PySpark基础入门(3):RDD持久化相关推荐

  1. PySpark | RDD持久化 | 共享变量 | Spark内核调度

    文章目录 一.RDD持久化 1.RDD的数据是过程数据 2.RDD缓存 2.1 RDD缓存的特点 2.2 cache()与unpersist()实战 3.RDD CheckPoint 3.1 Chec ...

  2. PySpark | SparkSQL入门 | DataFrame入门

    文章目录 一.快速入门 1. 什么是SparkSQL 2. 为什么要学习SparkSQL 3. SparkSQL特点 二.SparkSQL概述 1. SparkSQL和Hive的异同 2. Spark ...

  3. 弹性式分布数据集RDD——Pyspark基础 (二)

    连载中:http://ihoge.cn/tags/pyspark/ title: 弹性式分布数据集RDD--Pyspark基础 (二) date: 2018-04-15 17:59:21 commen ...

  4. python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程

    [注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...

  5. Spark基础学习笔记20:RDD持久化、存储级别与缓存

    文章目录 零.本讲学习目标 一.RDD持久化 (一)引入持久化的必要性 (二)案例演示持久化操作 1.RDD的依赖关系图 2.不采用持久化操作 3.采用持久化操作 二.存储级别 (一)持久化方法的参数 ...

  6. 〖Python零基础入门篇(63)〗 - 持久化学生信息库的完善

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  7. 零基础入门学习Python(33)-图形用户界面编程(GUI编程)EasyGui

    用户界面编程,即平时说的GUI(Graphical User Interface)编程,那些带有按钮.文本.输入框的窗口的编程 EasyGui是一个非常简单的GUI模块,一旦导入EasyGui模块,P ...

  8. pyspark基础教程

    pyspark基础教程 下面一段代码是简单教程,对与如何向spark 集群提交代码任务,无论文档和博客都有很多说法,其实很简单,只要在脚本中setMaster("spark://192.16 ...

  9. 开源的数据库,PostgreSQL 基础入门实战

    PostgreSQL 简介与安装 实验介绍 大家好,本课程是关于 PostgreSQL 数据库的使用说明,细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实.深入浅出.示例充足.覆盖重 ...

最新文章

  1. LINUX应用修改硬件寄存器l,郝健: Linux内存管理学习笔记-第2节课【转】
  2. mysql范围条件_MySQL 索引及优化实战(一)
  3. 【Python基础】加密你的Python源码顺便再打个包如何?
  4. pc构件生产线及设备_【图片】PC装配式建筑生产线,PC构件装备,PC生产线模台15805376300【pc装配式建筑吧】...
  5. 未经审视的人生是不值得过的
  6. PHP当作客户端访问连接另外一个socket的方法
  7. ECCV 2020 论文大盘点-自动驾驶篇
  8. Python学习笔记之While循环(一)
  9. js+css3实现旋转效果
  10. 一致性hash原理及php实例
  11. 工具:Spy++ —— 窗口、消息查看分析利器
  12. 计算机的自带拍视频教程,电脑如何录制视频并剪辑
  13. 时间转换中的夏时制问题
  14. three.js 凹凸贴图
  15. Nested weights are bad for performance警告
  16. 2021年中国纺织钩环市场趋势报告、技术动态创新及2027年市场预测
  17. 互联网面试——WPF面试问题
  18. 观察者(observer)模式(一)
  19. 菜鸟的springboot项目图片上传及图片路径分析
  20. 64层的汉诺塔问题究竟需要几步才能完成?

热门文章

  1. WEEX UI 官网
  2. MySQL的数据库引擎介绍
  3. C语言函数while的用法
  4. 单链表的整表创建(头结点版)
  5. Redis一打开一闪而过,没有出现主界面的解决办法及原因
  6. 写一个函数,输入一个年份,判断是不是闰年
  7. 51单片机,点亮LED灯和闪烁
  8. python 今天日期是多少,python time时间,日期,时间
  9. Android 使用Service 实现的简易音乐播放器(有播放、暂停(继续)、重播、停止)
  10. android手机获取系统短信sqlite数据库并查看内容