ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## Checkpoint 执行过程:在代码层面是这样执行的,如果用到某个RDD的数据的时候,首先会检查是否做了缓存,如果做了缓存,会直接从缓存里面取数据。 如果没有做缓存,则判断是否做了checkpoint,如果做了checkpoint,则从checkpoint的指定路径下获取数据。 如果没有checkpoint,只能从新计算得到数据。 checkpoint的具体实现步骤: 1、设置一个checkpoint的目录: sc.setCheckpointDir(“hdfs://node01:9000/cp-20190105-1”) 2、把要checkpoint的RDD的数据进行cache: rdd.persist 3、checkpoint: rdd.checkpoint 最后在调用action算子的时候才会统一地进行cache和checkpoint,而且该实现步骤是用于离线实现过程中的 查看是否做了checkpoint: rdd.isCheckpointed 查看checkpoint的存储目录: rdd.getCheckpointFile ## spark的cache和persist的区别:   计算流程DAG特别长,服务器需要将整个DAG计算完成得出结果,但是如果在这很长的计算流程中突然中间算出的数据丢失了,spark又会根据RDD的依赖关系从头到尾计算一遍,这样子就很费性能,当然我们可以将中间的计算结果通过cache或者persist放到内存或者磁盘中   cache最终调用了persist方法,默认的存储级别仅是存储内存中的,persist有好几个存储级别,persist是最根本的底层函数,executor执行时,60%用来缓存RDD,40%用来存放数据.