cache,persist,checkpoint 区别
-
cache
-
默认将RDD的数据持久化到内存中。cache是懒执行
-
chche () = persist()=persist(StorageLevel.Memory_Only)
persist:
-
可以指定持久化的级别。最常用的是MEMORY_ONLY和MEMORY_AND_DISK。”_2”表示有副本数
cache和persist的注意事项
-
cache和persist都是懒执行,必须有一个action类算子触发执行
-
cache和persist算子的返回值可以赋值给一个变量,在其他job中直接使用这个变量就是使用持久化的数据了。持久化的单位是partition
-
cache和persist算子后不能立即紧跟action算子
checkpoint
-
checkpoint将RDD持久化到磁盘,还可以切断RDD之间的依赖关系
-
checkpoint 的执行原理
-
当RDD的job执行完毕后,会从finalRDD从后往前回溯。
-
当回溯到某一个RDD调用了checkpoint方法,会对当前的RDD做一个标记。
-
Spark框架会自动启动一个新的job,重新计算这个RDD的数据,将数据持久化到HDFS上。
-
-