已缓存的RDD使用scala终端中的rdd.cache()方法存储在内存中。
这意味着它将消耗部分ram可用于Spark进程本身。
话虽如此,如果ram受到限制,并且越来越多的RDD被缓存,何时会自动清除rdd缓存占用的内存?
Spark会清理缓存的RDDs
和Datasets
/ DataFrames
:
RDD.unpersist
(How to uncache RDD?)/ Dataset.unpersist
方法或Catalog.clearCache
明确要求时。如果不再使用RDD,Spark将自动取消保持/清除RDD或Dataframe。要检查是否缓存了RDD,请检查Spark UI并检查“存储”选项卡并查看“内存”详细信息。
从终端,我们可以使用'rdd.unpersist()'或'sqlContext.uncacheTable(“sparktable”)'
从内存中删除RDD或表。 Spark为Lazy Evaluation做了,除非你说任何动作,否则它不会将任何数据加载或处理到RDD或DataFrame中。