Spark 中的缓存是如何工作的

How does caching in Spark works

我正在努力掌握 Spark 中缓存的用例。我将这个概念理解为“它只将 RDD 保存到内存中”,但是一旦执行了一个操作,这不是已经完成了吗?

假设我读取了一个文本文件并将 RDD 命名为“df”,然后 运行 一个 count() 作为我的操作。通过这样做,我已经在内存中有了我的 RDD 并且可以在以后调用,所以为什么或什么时候我想要缓存我的 RDD?是不是在使用过滤器的情况下(但是过滤器 return 一个可以作为新变量存储的新 RDD)?

感谢您的帮助:)

当你调用一个动作时,RDD 确实进入了内存,但在该动作完成后该内存将被释放。通过缓存 RDD,它会被强制持久化到内存(或磁盘,取决于你缓存它的方式),这样它就不会被擦除,并且可以重复使用以加速未来对同一个 RDD 的查询。

过滤器是不同的,因为过滤器是一个转换,而不是一个动作。当然你也可以缓存过滤后的RDD,但它只会在过滤后的RDD上调用一个动作后才会持久化到内存中。