Spark中cache、persist、checkpoint区别
spark中的cache、persist、checkpoint都可以将RDD保存起来,进行持久化操作,供后面重用或者容错处理。但是三者有所不同。
cache
- 将数据临时存储在内存中进行数据重用,不够安全;
- 会在血缘关系中添加新的依赖,如果出现问题,可以重新从头读取数据。
persist
- 将数据临时存储在磁盘文件中进行数据重用;
- 涉及到磁盘IO,性能较低,但是数据安全;
- 如果作业执行完毕,临时保存的数据文件就会丢失。
checkpoint
- 将数据长久的保存在磁盘文件中进行数据重用;
- 涉及到磁盘IO,性能较低,但是数据安全;
- 为了保证数据安全,所以一般情况下,会独立执行作业;
- 为了能够提高效率,一般情况下,需要和cache联合使用。
RDD.cache() RDD.checkpoint()
; - 需要指定保存路径,一般为HDFS;
- 执行过程中,会切断血缘关系,重新建立新的血缘关系。checkpoint等同于改变数据源。
血缘关系改变代码测试
- 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方式会在血缘关系中添加新的依赖。
- 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区别相关推荐
- Spark的Cache和Checkpoint区别和联系拾遗
点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 作为区别于 Hadoop 的一个重要 feature,cache 机制保证了需要访问重复数据的应用 ...
- Spark之cache ,persist ,checkpoint ,广播变量及其案例 : 根据IP地址(浏览器访问日志获取) / 经度纬度定位地理位置案例(7)
一 cache 和 persist 和 unpersist 1 cache 和 persist 1.1 cache 和 persist 的使用场景 (为什么使用 ?) 一个 applicatio ...
- 【收藏】spark中map与mapPartitions区别
两个函数最终处理得到的结果是一样的 mapPartitions比较适合需要分批处理数据的情况,比如将数据插入某个表,每批数据只需要开启一次数据库连接,大大减少了连接开支,伪代码如下: arrayRDD ...
- Spark精华问答 | Spark和Hadoop的架构区别解读
总的来说,Spark采用更先进的架构,使得灵活性.易用性.性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高.我总结,具体表现在如下几个方面. 1 Q:Spark和 ...
- spark中的cache()、persist()和checkpoint()的区别
首先,这三者都是做RDD持久化的,cache()和persist()是将数据默认缓存在内存中,checkpoint()是将数据做物理存储的(本地磁盘或Hdfs上),当然rdd.persist(Stor ...
- Spark中CheckPoint、Cache、Persist的用法、区别
Spark中CheckPoint.Cache.Persist 大家好,我是一拳就能打爆A柱的猛男 这几天看到一套视频<尚硅谷2021迎新版大数据Spark从入门到精通>,其中有关于检查点( ...
- Spark RDD中cache和persist的区别
转自:http://www.ithao123.cn/content-6053935.html 通过观察RDD.scala源代码即可知道cache和persist的区别: def persist(new ...
- Spark 持久化(cache和persist的区别)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 1.RDD 持久化 Spark ...
- Spark cache和checkpoint机制
2019独角兽企业重金招聘Python工程师标准>>> Spark cache和checkpoint机制 博客分类: spark 1. RDD cache缓存 当持久化某个RDD后, ...
最新文章
- 大闸蟹的OO第二单元总结
- 修复计算机怎么操作系统,如何巧妙恢复被误删的操作系统分区
- 别顾着学习工作,没了生活
- Android--相对布局
- 运维工程师仪表免费换新活动开始了…任何品牌万用表、钳表、测温仪都可以换福禄克万用表、钳表、测温仪...
- System.arraycopy
- Codeforces Round #688 (Div. 2)
- Android标签库,JSP Struts之HTML标签库详解 _Android/移动互联网/物联网/_夜鹰教程网...
- mysql创建操作用户
- Kafka的架构设计
- C++数据结构与算法 动态规划
- 菜鸟对新技术的一点看法
- 阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制
- 能够兼容ViewPager的ScrollView
- 原生小说APP源码,可二次开发,小说阅读,四端互通:android端,ios端,h5端,公众号端
- Windows10微软商店打不开怎么办?
- linux启动项加命令,启动项 命令(linux 添加开机启动项的三种方法)
- 出现 Unexpected token T in JSON at position 0 ,at JSON.parse (<anonymous>) 的解决方法
- moses 编译_MOSES安装以及使用说明
- Princeton Algorithms, Boggle
热门文章
- 基于B树的图书管理系统(C语言)(含完整代码)
- 今日的质量,明日的市场--谈谈软件登记测试
- 记2019北航计算机夏令营体验~
- win 10 hosts 文件位置
- Eolution登录live邮箱
- 十三五期间,北京智慧交通建设内容有哪些?怎么建?
- ubuntu18.04修改屏幕休眠时间
- ssh: Bad configuration option: usedns
- android 摄像头检测工具,检摄app下载-检摄软件(检测摄像头)下载 v1.0.7安卓版_5577安卓网...
- Matlab解决脚本中中文乱码问题