PySpark基础入门(3):RDD持久化
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持久化相关推荐
- PySpark | RDD持久化 | 共享变量 | Spark内核调度
文章目录 一.RDD持久化 1.RDD的数据是过程数据 2.RDD缓存 2.1 RDD缓存的特点 2.2 cache()与unpersist()实战 3.RDD CheckPoint 3.1 Chec ...
- PySpark | SparkSQL入门 | DataFrame入门
文章目录 一.快速入门 1. 什么是SparkSQL 2. 为什么要学习SparkSQL 3. SparkSQL特点 二.SparkSQL概述 1. SparkSQL和Hive的异同 2. Spark ...
- 弹性式分布数据集RDD——Pyspark基础 (二)
连载中:http://ihoge.cn/tags/pyspark/ title: 弹性式分布数据集RDD--Pyspark基础 (二) date: 2018-04-15 17:59:21 commen ...
- python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程
[注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...
- Spark基础学习笔记20:RDD持久化、存储级别与缓存
文章目录 零.本讲学习目标 一.RDD持久化 (一)引入持久化的必要性 (二)案例演示持久化操作 1.RDD的依赖关系图 2.不采用持久化操作 3.采用持久化操作 二.存储级别 (一)持久化方法的参数 ...
- 〖Python零基础入门篇(63)〗 - 持久化学生信息库的完善
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
- 零基础入门学习Python(33)-图形用户界面编程(GUI编程)EasyGui
用户界面编程,即平时说的GUI(Graphical User Interface)编程,那些带有按钮.文本.输入框的窗口的编程 EasyGui是一个非常简单的GUI模块,一旦导入EasyGui模块,P ...
- pyspark基础教程
pyspark基础教程 下面一段代码是简单教程,对与如何向spark 集群提交代码任务,无论文档和博客都有很多说法,其实很简单,只要在脚本中setMaster("spark://192.16 ...
- 开源的数据库,PostgreSQL 基础入门实战
PostgreSQL 简介与安装 实验介绍 大家好,本课程是关于 PostgreSQL 数据库的使用说明,细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实.深入浅出.示例充足.覆盖重 ...
最新文章
- Linux crontab 命令基本说明
- 用javascript制作随机汉字打字练习小程序
- 【程序员面试宝典】强制类型转换之面试例题2
- JUC锁-ReentrantReadWrite(五)
- 内蒙古计算机专修学院单招,内蒙古电子信息职业技术学院单招多少分能上?
- 06jQuery-04-DOM操作
- 开源项目导入eclipse的一般步骤[转]
- oracle查看表空间和物理文件大小
- Excel 4.0宏躲避杀软检测(转)
- python从键盘获取列表,python – 从5行中的列表列表中获取所有元素
- 模拟电子技术基础:基本放大电路
- 计算机组成码距,计算机组成原理:2.3.2 纠错码原理.ppt
- 熵的性质:可加性和强可加性
- 面试题汇总二 Java 多线程篇
- 云服务厂商人才空心化隐忧
- 在Linux上测试网络的命令之3----基础网络命令(netstat\ss)
- 微信小程序图片404时显示默认图片
- 实习生风采 · 贰 | 张倬胜同学:攻关「孟子」轻量化预训练模型
- redis 之sentinel配置
- OSChina 周一乱弹 ——看见别人的工作台眼神都发光