RDD通过Cache或者Persist方法将前面的计算结果缓存,默认情况下会把数据缓存在(BlockManager)JVM的堆内存中。不是说这两个方法被调用时立即缓存,而是触发后面的action算子时,该RDD将会被缓存在计算节点的内存中,供后面重用。
Cache是调用的无参Persist方法,存储级别为MEMORY_ONLY。
如果需要从内存中清除缓存,可以使用unpersist()方法。RDD持久化是可以手动选择不同的策略的。在调用persist()时传入对应的StorageLevel即可。

检查点其实就是通过将RDD中间结果写入磁盘。由于血缘依赖过长会造成容错成本过高,这样就不如在中间阶段做检查点容错。如果检查点之后节点出现问题,可以从检查点开始重做血缘,减少了开销。同理,也是在执行Action操作才能触发。