spark cache操作

本文探讨了在Spark中如何有效地使用缓存提高性能,包括在读取数据时设置缓存、利用RDD只读特性、动态管理缓存以及应对大规模数据恢复时使用checkpoint策略。通过这些方法,可以优化Spark作业的执行效率并确保数据安全性。
摘要由CSDN通过智能技术生成

spark的rdd对应的是一个弹性的分布式的数据集,对应的数据是只读的数据。
在这种情况下,充分的使用缓存是能够很好的提高性能的。那么应该如何操作了?
spark会将代码对应的解析成为多个dag的有向无环图的操作的。下面是解析之后的一个简单的示意图的

从图中可以看到,对应的是存在如下的问题的。每一个DAG对应的都是从数据源读取数据的,这样的操作本身来说是存在问题的。数据本身其实只是需要读取一次就可以了,后续的数据都是需要基于当前的数据来执行操作的,这个读取的数据是可以缓存的。
1.所以,可以在第一步读取数据的数据设置缓存的。spark可以设置缓存级别的。
val wordDataset: Dataset[String] = spark.read.textFile(“spark-test/word.txt”).persist(StorageLevel.MEMORY_AND_DISK_SER_2) 可以使用带有副本的缓存来提高数据的安全性保证的。
2.spark的rdd本身是只读的,非常适合缓存的使用场景的。下面是一个设想的,我们可以充分的发挥出来对应的rdd的特性的,充分的使用缓存来加速相关的操作实现的。

在这里插入图片描述
3.选在在合适的时机来释放对应的缓存的。不要一直将整个的缓存保留到从开始到结束的整个的过程中的,动态的管理和释放缓存数据。减少缓存的承受压力的。
4.还存在另外的一个问题,比较简单的spark任务和少量数据的话,spark任务的恢复是简单的,但是大量的数据的话,spark出现了异常的话,需要怎么恢复?借助于上面的缓存是存在很大的局限的,我们必须要使用到一种新的技术来操作实现的,比如spark最新优化的点,checkpoint来完成相关的就近恢复的操作的,而不需要恢复从起点开始的所有的rdd的数据的。这个是一个很好的机制的。从指定时间点来恢复得到rdd数据,然后继续接受后续的新的数据组成的rdd参与计算操作的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值