什么时候Spark会自动清理缓存的RDD?

时间:2017-12-07 12:39:18

标签: apache-spark caching spark-dataframe rdd

已缓存的RDD使用scala终端中的rdd.cache()方法存储在内存中。

这意味着它将消耗部分ram可用于Spark进程本身。

说过如果ram受到限制,并且越来越多的RDD被缓存了,什么时候会自动清理rdd缓存占用的内存?

2 个答案:

答案 0 :(得分:2)

Spark将清除缓存的RDDsDatasets / DataFrames

  • 通过调用RDD.unpersistHow to uncache RDD?)/ Dataset.unpersist方法或Catalog.clearCache明确询问时。
  • 定期,cache cleaner

      

    Spark会自动监视每个节点上的缓存使用情况,并以最近最少使用(LRU)的方式删除旧数据分区。如果您想手动删除RDD而不是等待它从缓存中删除,请使用RDD.unpersist()方法。

  • 当相应的分布式数据结构被垃圾收集时。

答案 1 :(得分:1)

如果不再使用RDD,Spark将自动取消保持/清除RDD或Dataframe。要检查是否缓存了RDD,请检查Spark UI并检查“存储”选项卡并查看“内存”详细信息。

从终端,我们可以使用'rdd.unpersist()'或'sqlContext.uncacheTable(“sparktable”)'

从内存中删除RDD或表。 Spark为Lazy Evaluation做,除非你说任何动作,否则它不会将任何数据加载或处理到RDD或DataFrame中。