检查点机制
通过血缘机制
做容错
的辅助,血缘过长会造成容错成本过高
,这样就不如在中间阶段
做检查点容错
,如果之后有节点出现问题
而丢失分区,从做检查点的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()
版权声明:《 Spark RDD CheckPoint(检查点机制) 》为明妃原创文章,转载请注明出处!
最后编辑:2020-2-18 14:02:37