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