RDD的持久化和检查点
RDD的持久化
RDD可以通过persist方法或chche方法将前面的计算结果缓存到内存中,默认情况下presist()会将数据以序列化的形式缓存在JVM的堆空间之中。presist可以传入StorageLevel.的属性 配置OFF_HEAP有利于立即回收内存。
使用缓存持久化时不会删除血缘关系,父RDD的血缘关系还存在
RDD的检查点
Spark 中对于数据的保存除了持久化操作之外,还提供了一种检查点的机制,检查点(本质是通过将RDD写入Disk做检查点)是为了通过 Lineage 做容错的辅助
Lineage 过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果之后有节点出现问题而丢失分区,从做检查点的 RDD 开始重做 Lineage,就会减少开销。检查点通过将数据写入到 HDFS 文件系统实现了 RDD 的检查点功能。
配置CheckPoint需要提前sc.setCheckPointDir()