spark:清空程序运行时的所有(cache)缓存块
为啥要用到缓存
在我们编写spark
程序的时候,经常会用到action
算子,当程序执行到action
操作的代码时,开始真正地执行计算,这个时候耗时比较长。然而,当我们程序里面的action
算子计算出来的需要被多次使用的时候,为了不在让程序重复再次计算。将这个action
算子计算的结果进行persist
或者cache
(缓存)的操作,可以节省程序的运行时间。
出现的问题
如果当程序里面做了很多缓存(persist 或者cache)的操作。整个集群的可用内存将会减少,可能会影响后续的代码执行(可能会因为内存不足,而报错)。
如何清除缓存
- 如果编写代码思路比较清晰的话,可以很清楚地记得哪个
rdd
或者dataSet
进行了缓存的操作。可以直接调用unpersist
操作
一个简单的例子如下:
// 假设注册了一张teacher表,dataFrame读取了 这张表
val data:DataFrame = spark.sql("SELECT * FROM teacher")
// 程序开始进行缓存cache(默认存储到内存当中),然后调用action算子触发程序执行
data.cache.show(