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

问题描述 投票:1回答:2

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

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

话虽如此,如果ram受到限制,并且越来越多的RDD被缓存,何时会自动清除rdd缓存占用的内存?

apache-spark caching spark-dataframe rdd
2个回答
2
投票

Spark会清理缓存的RDDsDatasets / DataFrames

  • 当通过调用RDD.unpersistHow to uncache RDD?)/ Dataset.unpersist方法或Catalog.clearCache明确要求时。
  • 定期,由cache cleaner: Spark会自动监视每个节点上的缓存使用情况,并以最近最少使用(LRU)的方式删除旧数据分区。如果您想手动删除RDD而不是等待它退出缓存,请使用RDD.unpersist()方法。
  • 当相应的分布式数据结构被垃圾收集时。

1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.