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 crontab 命令基本说明
  2. 用javascript制作随机汉字打字练习小程序
  3. 【程序员面试宝典】强制类型转换之面试例题2
  4. JUC锁-ReentrantReadWrite(五)
  5. 内蒙古计算机专修学院单招,内蒙古电子信息职业技术学院单招多少分能上?
  6. 06jQuery-04-DOM操作
  7. 开源项目导入eclipse的一般步骤[转]
  8. oracle查看表空间和物理文件大小
  9. Excel 4.0宏躲避杀软检测(转)
  10. python从键盘获取列表,python – 从5行中的列表列表中获取所有元素
  11. 模拟电子技术基础:基本放大电路
  12. 计算机组成码距,计算机组成原理:2.3.2 纠错码原理.ppt
  13. 熵的性质:可加性和强可加性
  14. 面试题汇总二 Java 多线程篇
  15. 云服务厂商人才空心化隐忧
  16. 在Linux上测试网络的命令之3----基础网络命令(netstat\ss)
  17. 微信小程序图片404时显示默认图片
  18. 实习生风采 · 贰 | 张倬胜同学:攻关「孟子」轻量化预训练模型
  19. redis 之sentinel配置
  20. OSChina 周一乱弹 ——看见别人的工作台眼神都发光

热门文章

  1. Ubuntu18安装截图工具flameshot
  2. ByVal与ByRef的区别
  3. 大家注意了,猪八戒网上有个骗子
  4. 科学计算基础软件包NumPy入门讲座(5):常用函数
  5. 基于微信校园跑腿小程序系统设计与实现 开题报告
  6. T-S模糊模型与状态反馈控制及Matlab仿真 (附代码)
  7. 解决MacBookPro git push提示You hasn‘t joined this enterprise
  8. 如何修改MySQL监听IP地址
  9. 【推荐系统】今日头条推荐算法原理全文详解
  10. 小程序笔记 -- 封装函数