大数据开发-Spark-RDD的持久化和缓存

本文介绍了Spark中的RDD缓存和持久化机制,包括cache和persist操作,以及不同缓存级别。缓存可以避免重复计算,提高计算速度,但存在丢失风险。RDD的容错机制保证了即使缓存丢失,也能通过重算丢失的分区来保证计算的正确性。此外,文章还探讨了checkpoint机制,用于进一步增强容错性,将RDD写入HDFS,适用于Lineage过长或宽依赖的场景。
摘要由CSDN通过智能技术生成

1.RDD缓存机制 cache, persist

Spark 速度非常快的一个原因是 RDD 支持缓存。成功缓存后,如果之后的操作使用到了该数据集,则直接从缓存中获取。虽然缓存也有丢失的风险,但是由于 RDD 之间的依赖关系,如果某个分区的缓存数据丢失,只需要重新计算该分区即可。

涉及到的算子:persist、cache、unpersist;都是 Transformation

缓存是将计算结果写入不同的介质,用户定义可定义存储级别(存储级别定义了缓存存储的介质,目前支持内存、堆 外内存、磁盘);

通过缓存,Spark避免了RDD上的重复计算,能够极大地提升计算速度; RDD持久化或缓存,是Spark最重要的特征之一。可以说,缓存是Spark构建迭代式算法和快速交互式查询的关键因 素;

Spark速度非常快的原因之一,就是在内存中持久化(或缓存)一个数据集。当持久化一个RDD后,每一个节点都将 把计算的分片结果保存在内存中,并在对此数据集(或者衍生出的数据集)进行的其他动作(Action)中重用。这使 得后续的动作变得更加迅速;使用persist()方法对一个RDD标记为持久化。之所以说“标记为持久化”,是因为出现persist()语句的地方,并不会马 上计算生成RDD并把它持久化,而是要等到遇到第一个行动操作触发真正计算以后,才会把计算结果进行持久化;通过persist()或cache()方法可以标记一个要被持久化的RDD,持久化被触发,RDD将会被保留在计算节点的内存中 并重用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值