checkpoint在spark中主要有两块应用:一块是在spark core中对RDD做checkpoint,可以切断做checkpoint RDD的依赖关系,将RDD数据保存到可靠存储(如HDFS)以便数据恢复;另外一块是应用在spark streaming中,使用checkpoint用来保存DStreamGraph以及相关配置信息,以便在Driver崩溃重启的时候能够接着之前进度继续进行处理
举个简单的例子,rdd1依赖rdd2,rdd2依赖rdd3,rdd3依赖rdd4,rdd4依赖rdd5
如果在执行rdd4的时候出现了故障,那么要从头开始计算,rdd1,rdd2,rdd3,rdd4
如果rdd4设置了checkpoint,当出现故障时,就不需要再执行rdd1,rdd2,rdd3
//指定 checkpoint的位置,一般设置成hdfs的地址
javaSparkContext.setCheckpointDir("file:///C:/Users/need/Desktop/123");
//有否有checkpoing
System.out.println(rdd.isCheckpointed());
//设置rdd的checkpoint()
rdd.checkpoint();
System.out.println(rdd.isCheckpointed());