spark算子_Spark篇之持久化算子
一、前述
Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。
控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。
二、具体算子
1、 cache
默认将RDD的数据持久化到内存中。cache是懒执行。
chche () = persist()=persist(StorageLevel.Memory_Only)
2、persist(可以指定持久化的级别)
解释:
1、MEMORY_AND_DISK 意思是先往内存中放数据,内存不够再放磁盘
2、最常用的是MEMORY_ONLY和MEMORY_AND_DISK。”_2”表示有副本数。
3、选择的原则是:首先考虑内存,然后考虑序列化之后再放入内存,最后考虑内存加磁盘。
4、尽量避免使用“_2”和DISK_ONLY级别。
5、deserialized是不序列化的意思。
注意事项:
1、cache和persist都是懒执行,必须有一个action类算子触发执行。
2、cache和persist算子的返回值可以赋值给一个变量,在其他job中直接使用这个变量就是使用持久化的数据了。持久化的单位是partition。
3、cache和persist算子后不能立即紧跟action算子。
错误:
rdd.cache().count() 返回的不是持久化的RDD,而是一个数值了
3、 Checkpoint(对Lineage非常长时使用)
1、概念和特征:
不仅可以将数据持久化到磁盘,还可以切断RDD之间的依赖关系,checkpoint也是懒执行。
Checkpoin不仅存储结果,还会存储逻辑,还可以存储元数据。
Persisit切断不了RDD的依赖关系。
2、checkpoint 的执行原理:
(1).Spark job执行完之后,spark会从finalRDD从后往前回溯。
(2)当回溯到对某个RDD进行了checkpoint,会对这个RDD标记。
(3)回溯完成之后,Spark会重新计算标记RDD的结果,然后将结果保存到Checkpint目录中。
3、优化checekpoint
- 因为最后是要触发当前application的action算子,所以在触发之前加一层cache操作,一样会往前执行cache操作,实现对数据的cache ,所以考虑将cache优化到checkpoin的优化流程里。
- 对RDD执行checkpoint之前,最好对这个RDD先执行cache,这样新启动的job(回溯完成之后重新开的job)只需要将内存中的数据(cache缓存好的checkpoint那个点的数据)拷贝到HDFS上就可以。
- 省去了重新计算这一步,不需要重头开始来走到checkpoint这个点了。
总结:
持久化的最小单位是partition!!!
spark算子_Spark篇之持久化算子相关推荐
- spark算子_Spark常用算子
Spark的算子分类: 从大方向说,Spark算子大致可以分为以下两类: (1)Transformation变换/转换算子:这种变换并不触发提交作业,这种算子是延迟执行的,也就是说从一个RDD转换生成 ...
- spark算子_Spark 性能优化(四)——程序开发调优
1.4 程序开发调优 Spark 性能优化的第一步,就是要在开发 Spark 作业的过程中注意和应用一些性能优化的基本原则.开发调优,就是要让大家了解以下一些 Spark 基本开发原则,包括:RDD ...
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化...
转自:http://blog.csdn.net/wh_springer/article/details/51842496 近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上 ...
- CANN训练营第三季_昇腾CANN算子精讲课_TBE算子Sinh开发笔记_算子开发(二)
1.作业算子要求 2.检查版本对应关系 在Mindstudio软件包下载界面可以检查安装的mindstudio版本和cann版本是否一致,如果不一致可能会导致后面算子工程创建出错. 这里我用的Mind ...
- java求sobel算子代码_边缘检测sobel算子
#1,个人理解 网上查了很多资料,都说sobel算子是用来检测边缘的,分别给了两个方向上的卷积核,然后说明做法,就说这就是sobel算子.对于我个人来说,还有很多不明白的地方,所以理清下思路. #2, ...
- spark算子_Spark算子总结
一.RDD介绍 1.什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象.代码中是一个抽象类,它代表一个不可变.可分区 ...
- Spark 常用算子详解(转换算子、行动算子、控制算子)
Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...
- spark笔记之RDD常用的算子操作
Spark Rdd的所有算子操作,请见<sparkRDD函数详解.docx> 启动spark-shell 进行测试: spark-shell --master spark://node1: ...
- 五-中, Spark 算子 吐血总结(转化+行动算子共三十七个)
文章目录 五-中, Spark 算子吐血总结 5.1.4.3 RDD 转换算子(Transformation) 1. Value类型 1.1 `map` 1.2 `mapPartitions` 1.3 ...
最新文章
- URAL 2027 	URCAPL, Episode 1 (模拟)
- PhysicsJoint
- struts 模块化开发学习
- 十大经典数据挖掘算法:SVM
- mysql数据库单用户_SQLServer数据库之SqlServer数据库单用户模式无法删除的处理
- 【安全】java的Jaas授权与鉴权
- Bailian2818 密码【密码+置换】
- 检查Mysql引擎的方法
- You must install libopus-dev
- 中兴B860AV2.1-A,M,T-当贝纯净桌面-线刷固件(附刷机教程)
- 5 分钟,使用内网穿透快速实现远程桌面
- Chrome插件(UserScript)开发教程
- regedit 导入注册表
- 查计算机主板,怎么查看自己电脑的主板型号是什么?主板型号查询检查方法
- GitHub设置代理 提升速度
- 微信永久封号怎么解封?微信社交场景被限制解决办法
- torch模块常用方法总结
- 机器学习中的各种损失函数(Hinge loss,交叉熵,softmax)
- 【快速技巧】手机拍摄的视频如何旋转并保存?
- Java线程同步容易犯错的坑
热门文章
- 厦门理工C语言实验报告8,厦门理工c语言数据结构实验
- linux安装qt5.4配置,Linux编译安装Qt 5.4.1
- C语言 函数声明和调用 - C语言零基础入门教程
- 模拟微信支付服务器测试,专栏 - 腾讯WeTest-All Test in WeTest
- 属性子集选择的基本启发方法_一文看懂数据预处理最重要的3种思想和方法
- 逆置/反转单链表(C语言)
- 天津大学计算机预推免机试_2019预推免汇总 | 9.18New!
- 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?
- 前端vue后端java,Vue调用后端java接口的实例代码_亦心_前端开发者
- java 读取 邮件 附件,JavaMail 中对附件下载的处理