spark中的cache、persist、checkpoint都可以将RDD保存起来,进行持久化操作,供后面重用或者容错处理。但是三者有所不同。

cache

  • 将数据临时存储在内存中进行数据重用,不够安全;
  • 会在血缘关系中添加新的依赖,如果出现问题,可以重新从头读取数据。

persist

  • 将数据临时存储在磁盘文件中进行数据重用;
  • 涉及到磁盘IO,性能较低,但是数据安全;
  • 如果作业执行完毕,临时保存的数据文件就会丢失。

checkpoint

  • 将数据长久的保存在磁盘文件中进行数据重用;
  • 涉及到磁盘IO,性能较低,但是数据安全;
  • 为了保证数据安全,所以一般情况下,会独立执行作业;
  • 为了能够提高效率,一般情况下,需要和cache联合使用。RDD.cache() RDD.checkpoint()
  • 需要指定保存路径,一般为HDFS;
  • 执行过程中,会切断血缘关系,重新建立新的血缘关系。checkpoint等同于改变数据源。

血缘关系改变代码测试

  1. cache
package com.zsz.spark.core.rdd.operator.persistimport org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object Spark_RDD_Persist {def main(args: Array[String]): Unit = {val conf: SparkConf = new SparkConf().setMaster("local").setAppName("persist")val sc = new SparkContext(conf)val rdd: RDD[String] = sc.makeRDD(List("hello spark", "hello scala"))val flatMapRDD: RDD[String] = rdd.flatMap(_.split(" "))val mapRDD: RDD[(String, Int)] = flatMapRDD.map((_, 1))val reduceRDD: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)mapRDD.cache()// 打印血缘关系println(mapRDD.toDebugString)reduceRDD.collect().foreach(println)println("*****************************")// 打印血缘关系println(mapRDD.toDebugString)sc.stop()}
}

输出结果:

从结果可以看到,cache和persist方式会在血缘关系中添加新的依赖。

  1. checkpoint
package com.zsz.spark.core.rdd.operator.persistimport org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object Spark_RDD_Persist {def main(args: Array[String]): Unit = {val conf: SparkConf = new SparkConf().setMaster("local").setAppName("persist")val sc = new SparkContext(conf)sc.setCheckpointDir("cp")val rdd: RDD[String] = sc.makeRDD(List("hello spark", "hello scala"))val flatMapRDD: RDD[String] = rdd.flatMap(_.split(" "))val mapRDD: RDD[(String, Int)] = flatMapRDD.map((_, 1))val reduceRDD: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)// mapRDD.cache()mapRDD.checkpoint()// 打印血缘关系println(mapRDD.toDebugString)reduceRDD.collect().foreach(println)println("*****************************")// 打印血缘关系println(mapRDD.toDebugString)sc.stop()}
}

输出结果:

从结果看出,checkpoint会切断血缘关系,重新建立新的血缘关系。等同于改变数据源。

Spark中cache、persist、checkpoint区别相关推荐

  1. Spark的Cache和Checkpoint区别和联系拾遗

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 作为区别于 Hadoop 的一个重要 feature,cache 机制保证了需要访问重复数据的应用 ...

  2. Spark之cache ,persist ,checkpoint ,广播变量及其案例 : 根据IP地址(浏览器访问日志获取) / 经度纬度定位地理位置案例(7)

    一  cache 和 persist 和 unpersist 1  cache 和 persist 1.1  cache 和 persist 的使用场景 (为什么使用 ?) 一个 applicatio ...

  3. 【收藏】spark中map与mapPartitions区别

    两个函数最终处理得到的结果是一样的 mapPartitions比较适合需要分批处理数据的情况,比如将数据插入某个表,每批数据只需要开启一次数据库连接,大大减少了连接开支,伪代码如下: arrayRDD ...

  4. Spark精华问答 | Spark和Hadoop的架构区别解读

    总的来说,Spark采用更先进的架构,使得灵活性.易用性.性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高.我总结,具体表现在如下几个方面. 1 Q:Spark和 ...

  5. spark中的cache()、persist()和checkpoint()的区别

    首先,这三者都是做RDD持久化的,cache()和persist()是将数据默认缓存在内存中,checkpoint()是将数据做物理存储的(本地磁盘或Hdfs上),当然rdd.persist(Stor ...

  6. Spark中CheckPoint、Cache、Persist的用法、区别

    Spark中CheckPoint.Cache.Persist 大家好,我是一拳就能打爆A柱的猛男 这几天看到一套视频<尚硅谷2021迎新版大数据Spark从入门到精通>,其中有关于检查点( ...

  7. Spark RDD中cache和persist的区别

    转自:http://www.ithao123.cn/content-6053935.html 通过观察RDD.scala源代码即可知道cache和persist的区别: def persist(new ...

  8. Spark 持久化(cache和persist的区别)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 1.RDD 持久化 Spark ...

  9. Spark cache和checkpoint机制

    2019独角兽企业重金招聘Python工程师标准>>> Spark cache和checkpoint机制 博客分类: spark 1. RDD cache缓存 当持久化某个RDD后, ...

最新文章

  1. 大闸蟹的OO第二单元总结
  2. 修复计算机怎么操作系统,如何巧妙恢复被误删的操作系统分区
  3. 别顾着学习工作,没了生活
  4. Android--相对布局
  5. 运维工程师仪表免费换新活动开始了…任何品牌万用表、钳表、测温仪都可以换福禄克万用表、钳表、测温仪...
  6. System.arraycopy
  7. Codeforces Round #688 (Div. 2)
  8. Android标签库,JSP Struts之HTML标签库详解 _Android/移动互联网/物联网/_夜鹰教程网...
  9. mysql创建操作用户
  10. Kafka的架构设计
  11. C++数据结构与算法 动态规划
  12. 菜鸟对新技术的一点看法
  13. 阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制
  14. 能够兼容ViewPager的ScrollView
  15. 原生小说APP源码,可二次开发,小说阅读,四端互通:android端,ios端,h5端,公众号端
  16. Windows10微软商店打不开怎么办?
  17. linux启动项加命令,启动项 命令(linux 添加开机启动项的三种方法)
  18. 出现 Unexpected token T in JSON at position 0 ,at JSON.parse (<anonymous>) 的解决方法
  19. moses 编译_MOSES安装以及使用说明
  20. Princeton Algorithms, Boggle

热门文章

  1. 基于B树的图书管理系统(C语言)(含完整代码)
  2. 今日的质量,明日的市场--谈谈软件登记测试
  3. 记2019北航计算机夏令营体验~
  4. win 10 hosts 文件位置
  5. Eolution登录live邮箱
  6. 十三五期间,北京智慧交通建设内容有哪些?怎么建?
  7. ubuntu18.04修改屏幕休眠时间
  8. ssh: Bad configuration option: usedns
  9. android 摄像头检测工具,检摄app下载-检摄软件(检测摄像头)下载 v1.0.7安卓版_5577安卓网...
  10. Matlab解决脚本中中文乱码问题