Spark RDD CheckPoint(检查点机制)

检查点机制

通过血缘机制容错的辅助,血缘过长会造成容错成本过高,这样就不如在中间阶段检查点容错,如果之后有节点出现问题而丢失分区,从做检查点的RDD开始重做 Lineage,就会减少开销。检查点通过将数据写入到文件系统(可以是本地或者HDFS或者是其他)实现了RDD的检查点功能。

使用

为当前 RDD 设置 检查点。该函数将会创建一个二进制的文件,并存储到设置的目录中,在checkpoint()的过程中,该RDD的所有依赖于父RDD中的信息将全部被移除。对RDD进行checkpoint操作并不会马上被执行,必须执行Action操作才能触发

首先需要设置 存储路径,一般为 HDFS 上

SparkContext.setCheckpointDir(路径)

val conf = new SparkConf().setMaster("local[*]").setAppName("c")
val sc = new SparkContext(conf)
// 设置检查点存储的路径
sc.setCheckpointDir("checkdir")

设置需要做 检查点的 RDD

val strRDD = sc.makeRDD(List("a", "b", "c", "c"),2)
val kvRDD = strRDD.map((_, 1))
kvRDD.checkpoint()
val res = kvRDD.reduceByKey(_ + _)
res.checkpoint()
val r = res.collect()

mark

发表评论 / Comment

用心评论~