Spark Checkpoint读操作代码分析
2016-07-17 15:58
471 查看
《Spark RDD缓存代码分析》
《Spark Task序列化代码分析》
《Spark分区器HashPartitioner和RangePartitioner代码详解》
《Spark Checkpoint读操作代码分析》
《Spark Checkpoint写操作代码分析》
上次介绍了RDD的Checkpint写过程(《Spark Checkpoint写操作代码分析》),本文将介绍RDD如何读取已经Checkpint的数据。在RDD Checkpint完之后,Checkpint的信息(比如数据存放的目录)都由RDDCheckpointData去管理,所以当下次计算依赖了这个RDD的时候,首先是根据依赖关系判断出当前这个RDD是否被Checkpint了,主要是通过RDD的dependencies决定:
如果RDD被Checkpint了,那么checkpointRDD为Some(CheckpointRDD[T])了,所以依赖的RDD变成了CheckpointRDD。在计算数据的过程中会调用RDD的iterator方法:
计算的过程中首先会判断RDD是否被Checkpint了,而RDD Checkpint写之后这个条件肯定是true的。而firstParent已经变成了CheckpointRDD,所以会调用CheckpointRDD的iterator方法, 该方法最终会调用ReliableCheckpointRDD的compute方法:
在compute方法中会通过ReliableCheckpointRDD的readCheckpointFile方法来从file路径里面读出已经Checkpint的数据,readCheckpointFile的实现如下:
最后数据就回被全部读取出来,整个Checkpint读过程完成了。
转载自过往记忆(http://www.iteblog.com/)
《Spark Task序列化代码分析》
《Spark分区器HashPartitioner和RangePartitioner代码详解》
《Spark Checkpoint读操作代码分析》
《Spark Checkpoint写操作代码分析》
上次介绍了RDD的Checkpint写过程(《Spark Checkpoint写操作代码分析》),本文将介绍RDD如何读取已经Checkpint的数据。在RDD Checkpint完之后,Checkpint的信息(比如数据存放的目录)都由RDDCheckpointData去管理,所以当下次计算依赖了这个RDD的时候,首先是根据依赖关系判断出当前这个RDD是否被Checkpint了,主要是通过RDD的dependencies决定:
转载自过往记忆(http://www.iteblog.com/)
相关文章推荐
- JAVA 面向对象 类和对象
- matlab绘制 三维剖面图
- java并发之CAS
- php生成唯一订单号的方法
- Java的基础概念
- Java?C++?虚函数?抽象?
- 用matlab画正弦平滑曲线而不是锯齿线
- USACO - 3.2.6 Sweet Butter 香甜的黄油 Dijkstra(迪杰斯特拉算法)+枚举
- 浅谈scrapy框架的使用
- JAVA BigInteger
- java设计模式-克隆模式(复制模式)
- Python2.6升级到2.7
- maven eclipse环境搭建
- 两个链表的第一个公共结点 java
- 283. Move Zeroes
- python学习——进程vs线程
- 字符串和数字之间的转换
- python byte code 的生成以投放到虚拟机的过程
- python学习第六天 条件判断和循环
- MyEclipse更改字体大小,导入导出工程,查看源码