当我明确调用rdd.cache时,我可以从spark控制台存储选项卡中看到,实际上只缓存了一小部分rdd。我的问题是剩下的部分在哪里? Spark如何决定在缓存中留下哪个部分?
同样的问题适用于sc.textFile()读入的初始原始数据。我知道这些rdd会自动缓存,即使spark控制台存储表没有显示有关其缓存状态的任何信息。我们知道有多少是缓存与丢失的吗?
答案 0 :(得分:4)
cache()
与persist(StorageLevel.MEMORY_ONLY)
相同,您的数据量可能超过可用内存。然后,Spark以“最近最少使用”的方式驱逐缓存。
您可以通过设置配置选项来调整保留的内存以进行缓存。有关详细信息,请参阅Spark Documentation,并注意:spark.driver.memory
,spark.executor.memory
,spark.storage.memoryFraction
不是专家,但我认为textFile()
不会自动缓存任何内容; Spark Quick Start显式缓存文本文件RDD:sc.textFile(logFile, 2).cache()