checkPoint
checkpoint 检查点是很多分布式系统的常用容错容灾机制,其本质就是将系统运行时的内存数据结构和状态持久化到磁盘上,在需要的时候对这些数据进行读取,然后重新构造出运行时的状态。
在Spark中使用检查点就是为了将RDD的状态保存下来,在重新执行时就不需要计算,直接从检查点读取即可
1.什么时候使用checkpoint
(1)迭代计算,要求保证数据安全
(2)对速度要求不高(跟cache进行对比)
(3)将中间结果保存到hdfs
package spark2020 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object RddCreate { def main(args:Array[String]):Unit={ val config: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wc") //创建上下文 val sc = new SparkContext(config) //设置检查点的保存目录 sc.setCheckpointDir("checkPoint") //创建RDD //1.从内存中创建,传递的分区参数为分区数 val listRDD:RDD[Int] = sc.makeRDD(List(1,2,3,4)) val mapRDD: RDD[(Int, Int)] = listRDD.map((_,1)) val reduceRDD: RDD[(Int, Int)] = mapRDD.reduceByKey(_+_) reduceRDD.checkpoint() reduceRDD.collect().foreach(println) println(reduceRDD.toDebugString) } } //(4) ShuffledRDD[2] at reduceByKey at RddCreate.scala:23 [] // | ReliableCheckpointRDD[3] at collect at RddCreate.scala:26 []
package spark2020 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object RddCreate { def main(args:Array[String]):Unit={ val config: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wc") //创建上下文 val sc = new SparkContext(config) //设置检查点的保存目录 sc.setCheckpointDir("checkPoint") //创建RDD //1.从内存中创建,传递的分区参数为分区数 val listRDD:RDD[Int] = sc.makeRDD(List(1,2,3,4)) val mapRDD: RDD[(Int, Int)] = listRDD.map((_,1)) mapRDD.checkpoint() val reduceRDD: RDD[(Int, Int)] = mapRDD.reduceByKey(_+_) reduceRDD.collect().foreach(println) println(reduceRDD.toDebugString) } } //(4) ShuffledRDD[2] at reduceByKey at RddCreate.scala:22 [] //+-(4) MapPartitionsRDD[1] at map at RddCreate.scala:20 [] //| ReliableCheckpointRDD[3] at collect at RddCreate.scala:25 []
posted on 2020-12-28 16:48 happygril3 阅读(567) 评论(0) 收藏 举报
浙公网安备 33010602011771号