【发布时间】:2016-03-11 02:31:40
【问题描述】:
在 Spark 中,每次我们对 RDD 执行任何操作时,都会重新计算 RDD。因此,如果我们知道 RDD 将被重用,我们应该明确地缓存 RDD。
假设,Spark 决定延迟缓存所有 RDD,并使用 LRU 将最相关的 RDD 自动保存在内存中(这是大多数缓存的工作方式)。这将对开发人员有很大帮助,因为他不必考虑缓存并专注于应用程序。此外,我看不出它会对性能产生什么负面影响,因为很难跟踪变量(RDD)在程序中使用了多少次,大多数程序员会决定以任何方式缓存大部分 RDD。
缓存通常自动发生。以操作系统/平台或框架或工具为例。但是由于分布式计算中缓存的复杂性,我可能会错过为什么缓存不能自动进行或对性能的影响。
所以我不明白,为什么我必须明确缓存为,
- 看起来很丑
- 很容易错过
- 很容易过度/不足使用
【问题讨论】:
标签: apache-spark caching