当前位置:网站首页>11 Spark on RDD CheckPoint
11 Spark on RDD CheckPoint
2022-08-08 23:31:00 【YaPengLi.】
所谓的检查点其实就是通过将 RDD 中间结果写入磁盘由于血缘依赖过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果检查点之后有节点出现问题,可以从检查点开始重做血缘,减少了开销。对 RDD 进行 checkpoint 操作并不会马上被执行,必须执行 Action 操作才能触发。
sc.setCheckpointDir("/checkpoint1")
val lineRdd: RDD[String] = sc.textFile("input/1.txt")
val wordRdd: RDD[String] = lineRdd.flatMap(line => line.split(" "))
val wordToOneRdd: RDD[(String, Long)] = wordRdd.map {
word => {
(word, System.currentTimeMillis())
} }
wordToOneRdd.cache()
wordToOneRdd.checkpoint()
wordToOneRdd.collect().foreach(println)
缓存和检查点区别
Cache 缓存只是将数据保存起来,不切断血缘依赖。Checkpoint 检查点切断血缘依赖。
Cache 缓存的数据通常存储在磁盘、内存等地方,可靠性低。Checkpoint 的数据通常存储在 HDFS 等容错、高可用的文件系统,可靠性高。
建议对 checkpoint()的 RDD 使用 Cache 缓存,这样 checkpoint 的 job 只需从 Cache 缓存中读取数据即可,否则需要再从头计算一次 RDD。
将数据长久地保存在磁盘文件中进行数据重用,涉及到磁盘IO,性能较低,但是数据安全。为了保证数据安全,所以一般情况下,会独立执行作业。为了能够提高效率,一般情况下,是需要和cache联合使用。执行过程中,会切断血缘关系。重新建立新的血缘关checkpoint等同于改变数据源。
边栏推荐
猜你喜欢
不躺平,然后做到极致,就是最大的“安全感”
(2022牛客多校三)A-Ancestor(LCA)
[YOLOv5] 6.0 environment construction (updated from time to time)
【CUDA】版本自由切换
Use Mongoose populate to implement multi-table associative storage and query, with complete code included
【Pytorch】学习笔记(一)
51nod 2877熟练使用tarjan的知识
WeChat applet error undefined Expecting 'STRING','NUMBER','NULL','TRUE','FALSE','{','[', got ]Solution
【LaTex异常与错误】 - 公式编号的参考引用命令\eqref发生错误Undefined control sequence——可能是因为没加载宏包amsmath
(2022牛客多校五)D-Birds in the tree(树形DP)
随机推荐
最小生成树prim 求得 树上两点之间的最大最小值
-Wl,--start-group ... -Wl,--end-group for resolving circular dependencies of several libraries
[PP-YOLOv2] Test a custom dataset
ArrayAccess 接口用处
Excel 2013 下拉为“快速分拆”调整为“填充序号”
(2022牛客多校四)A-Task Computing (排序+动态规划)
域前置通信过程和溯源思路
如何使用 Eolink 实现 API 文档自动生成
【瑞吉外卖】day04:员工分页查询、启用/禁用员工账号、编辑员工信息
微信小程序 wx:for 循环输出 例子
主从延迟原因及解决方案
2022牛客多校六 J-Number Game(简单推理)
(2022牛客多校五)B-Watches(二分)
PMP考点有哪些啊?
启牛商学院靠不靠谱呢?证券账户开了安全吗
树莓派wiringPi库的使用补充
Manacher(求解最长回文子串)
redis集群redis-trib扩容缩容
LeetCode:正则表达式匹配
-Wl,--start-group ... -Wl,--end-group 用于解决几个库的循环依赖关系