Apache spark Spark何时会自动清理缓存的RDD?
使用scala终端的RDD.cache()方法缓存的RDD存储在内存中 这意味着它将消耗火花过程本身可用的部分ramApache spark Spark何时会自动清理缓存的RDD?,apache-spark,caching,spark-dataframe,rdd,Apache Spark,Caching,Spark Dataframe,Rdd,使用scala终端的RDD.cache()方法缓存的RDD存储在内存中 这意味着它将消耗火花过程本身可用的部分ram 话虽如此,如果ram受到限制,并且缓存了越来越多的rdd,spark什么时候会自动清理rdd缓存占用的内存?spark会清理缓存的rdd和数据集/数据帧: 当通过调用RDD.unpersist()/Dataset.unpersist方法或Catalog.clearCache显式请求它时 定期,由以下人员: Spark会自动监视每个节点上的缓存使用情况,并以最近最少使用(LRU)
话虽如此,如果ram受到限制,并且缓存了越来越多的rdd,spark什么时候会自动清理rdd缓存占用的内存?spark会清理缓存的
rdd
和数据集/数据帧
:
- 当通过调用
RDD.unpersist
()/Dataset.unpersist
方法或Catalog.clearCache
显式请求它时
- 定期,由以下人员:
Spark会自动监视每个节点上的缓存使用情况,并以最近最少使用(LRU)的方式删除旧数据分区。如果要手动删除RDD,而不是等待它从缓存中掉出来,请使用RDD.unpersist()方法
- 当相应的分布式数据结构被垃圾回收时
如果不再使用RDD,Spark将自动取消保留/清除RDD或数据帧。要检查是否缓存了RDD,请检查Spark UI,检查存储选项卡并查看内存详细信息
在终端上,我们可以使用“rdd.unpersist()”或“sqlContext.uncacheTable”(“sparktable”)”
从内存中删除RDD或表。Spark专门用于延迟计算,除非您执行任何操作,否则它不会将任何数据加载或处理到RDD或数据帧中。如果您想取消缓存RDD,可以尝试.unpersist()
:请参见否,我想知道Spark何时会自动执行此操作?ContextCleaner负责定期执行此操作:缓存以最近使用最少的方式进行清理。此外,分配给缓存的内存与用于计算的内存是分开的。