spark:清空程序运行时的所有(cache)缓存块

本文介绍了在Spark程序中使用缓存提高性能的原因,以及过度缓存可能导致的内存问题。详细阐述了如何通过`unpersist()`方法手动清除特定缓存数据,以及在无法确定哪些数据被缓存时,如何使用循环遍历的方式清空所有缓存数据,从而避免内存不足的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spark:清空程序运行时的所有(cache)缓存块

为啥要用到缓存

  在我们编写spark程序的时候,经常会用到action算子,当程序执行到action操作的代码时,开始真正地执行计算,这个时候耗时比较长。然而,当我们程序里面的action算子计算出来的需要被多次使用的时候,为了不在让程序重复再次计算。将这个action算子计算的结果进行persist或者cache(缓存)的操作,可以节省程序的运行时间。

出现的问题

  如果当程序里面做了很多缓存(persist 或者cache)的操作。整个集群的可用内存将会减少,可能会影响后续的代码执行(可能会因为内存不足,而报错)。

如何清除缓存
  1. 如果编写代码思路比较清晰的话,可以很清楚地记得哪个rdd或者dataSet进行了缓存的操作。可以直接调用 unpersist操作
    一个简单的例子如下:
//  假设注册了一张teacher表,dataFrame读取了 这张表
val data:DataFrame = spark.sql("SELECT * FROM teacher")
// 程序开始进行缓存cache(默认存储到内存当中),然后调用action算子触发程序执行
data.cache.show(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值