一、前述

Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。

控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partitioncache和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篇之持久化算子相关推荐

  1. spark算子_Spark常用算子

    Spark的算子分类: 从大方向说,Spark算子大致可以分为以下两类: (1)Transformation变换/转换算子:这种变换并不触发提交作业,这种算子是延迟执行的,也就是说从一个RDD转换生成 ...

  2. spark算子_Spark 性能优化(四)——程序开发调优

    1.4 程序开发调优 Spark 性能优化的第一步,就是要在开发 Spark 作业的过程中注意和应用一些性能优化的基本原则.开发调优,就是要让大家了解以下一些 Spark 基本开发原则,包括:RDD ...

  3. Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化...

    转自:http://blog.csdn.net/wh_springer/article/details/51842496 近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上 ...

  4. CANN训练营第三季_昇腾CANN算子精讲课_TBE算子Sinh开发笔记_算子开发(二)

    1.作业算子要求 2.检查版本对应关系 在Mindstudio软件包下载界面可以检查安装的mindstudio版本和cann版本是否一致,如果不一致可能会导致后面算子工程创建出错. 这里我用的Mind ...

  5. java求sobel算子代码_边缘检测sobel算子

    #1,个人理解 网上查了很多资料,都说sobel算子是用来检测边缘的,分别给了两个方向上的卷积核,然后说明做法,就说这就是sobel算子.对于我个人来说,还有很多不明白的地方,所以理清下思路. #2, ...

  6. spark算子_Spark算子总结

    一.RDD介绍 1.什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象.代码中是一个抽象类,它代表一个不可变.可分区 ...

  7. Spark 常用算子详解(转换算子、行动算子、控制算子)

    Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...

  8. spark笔记之RDD常用的算子操作

    Spark Rdd的所有算子操作,请见<sparkRDD函数详解.docx> 启动spark-shell 进行测试: spark-shell --master spark://node1: ...

  9. 五-中, Spark 算子 吐血总结(转化+行动算子共三十七个)

    文章目录 五-中, Spark 算子吐血总结 5.1.4.3 RDD 转换算子(Transformation) 1. Value类型 1.1 `map` 1.2 `mapPartitions` 1.3 ...

最新文章

  1. URAL 2027 URCAPL, Episode 1 (模拟)
  2. PhysicsJoint
  3. struts 模块化开发学习
  4. 十大经典数据挖掘算法:SVM
  5. mysql数据库单用户_SQLServer数据库之SqlServer数据库单用户模式无法删除的处理
  6. 【安全】java的Jaas授权与鉴权
  7. Bailian2818 密码【密码+置换】
  8. 检查Mysql引擎的方法
  9. You must install libopus-dev
  10. 中兴B860AV2.1-A,M,T-当贝纯净桌面-线刷固件(附刷机教程)
  11. 5 分钟,使用内网穿透快速实现远程桌面
  12. Chrome插件(UserScript)开发教程
  13. regedit 导入注册表
  14. 查计算机主板,怎么查看自己电脑的主板型号是什么?主板型号查询检查方法
  15. GitHub设置代理 提升速度
  16. 微信永久封号怎么解封?微信社交场景被限制解决办法
  17. torch模块常用方法总结
  18. 机器学习中的各种损失函数(Hinge loss,交叉熵,softmax)
  19. 【快速技巧】手机拍摄的视频如何旋转并保存?
  20. Java线程同步容易犯错的坑

热门文章

  1. 厦门理工C语言实验报告8,厦门理工c语言数据结构实验
  2. linux安装qt5.4配置,Linux编译安装Qt 5.4.1
  3. C语言 函数声明和调用 - C语言零基础入门教程
  4. 模拟微信支付服务器测试,专栏 - 腾讯WeTest-All Test in WeTest
  5. 属性子集选择的基本启发方法_一文看懂数据预处理最重要的3种思想和方法
  6. 逆置/反转单链表(C语言)
  7. 天津大学计算机预推免机试_2019预推免汇总 | 9.18New!
  8. 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?
  9. 前端vue后端java,Vue调用后端java接口的实例代码_亦心_前端开发者
  10. java 读取 邮件 附件,JavaMail 中对附件下载的处理