Spark:cache和persist和checkpoint

只缓存到内存

cache底层调用的是persist方法,可以指定其他存储级别

cache和persist方法,严格来说,不是Transformation,应为没有生成新的RDD,只是标记当前rdd要cache或persist

cache、persist的使用场景:一个application多次触发Action,为了复用前面RDD计算好的数据,避免反复读取HDFS(数据源)中的数据和重复计算缓存,可以将数据缓存到内存或磁盘【executor所在的磁盘】,第一次触发action才放入到内存或磁盘,以后再出发action会读取缓存的RDD的数据再进行操作并且复用缓存的数据

支持多种StorageLevel,可以将数据序列化,默认放入内存使用的是java对象存储,但是占用空间大,优点速度快,也可以使用其他的序列化方式

触发action后第一个job计算结果,第二个存入内存

 

checkpoint

Checkpoint使用场景:适合复杂的计算【机器学习、迭代计算】,为了避免丢失数据儿重复计算,可以将宝贵的中间结果保存到hdfs中,中间结果安全

它可以将数据缓存到本地磁盘,相对于cache更加安全也可以存入Hdfs中,分布式文件管理系统,理论上不会丢失

触发action后从Hdfs中读取,如果文件被删除,即使删除一个分区,再次读取就会报错

如果RDD做了checkpoint,这个RDD以前的依赖关系就不在使用了

checkpoint触发action有二个job.第一个job计算结果一个是放hdfs

触发多次Action,checkpoint才有意义,多用于迭代计算

checkpoint严格的说,不是Transformation,只是标记当前RDD要做checkpoint

------------------------------------------------------------

如果checkpoint前,对rdd进行了cache,可以避免数据重复计算,如果有cache的数据有限使用cache,没有再使用checkpoint,如果没有checkpoint就从rdd依次往上读

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值