一、持久化
跨操作在内存中持久化(或缓冲)数据。当持久化RDD时,将每个节点的计算的所有分区存储在内存中,为了是数据的重用。再次调用的时候不需要重新计算,速度更快。
可以使用persist()和cache()两种方方将RDD标记为持久化。第一次动作中计算时,它将保存在节点的内存中。Spark的缓冲是容错的,当RDD分区丢失的时候,可以使用最初创建缓冲位置调用重新计算。
cache是调用了persist的无参缓冲方法。默认使用的缓冲在内存中,如果想要使用指定的持久化策略,可以使用persist(StoreageLevle的对象)来实现
二、RDD检查点
1.通过将数据写入到HDFS中做检查点,是多副本可靠存储,可以减少数据开销,提高容错性
2.当DAG的lineage过长,如果重算,则开销太大,此时可以用检查点,或者在宽依赖上面可以Checkpoint,减少了shuffle,收益更大。