Apache spark Spark中的缓存是如何工作的

Apache spark Spark中的缓存是如何工作的,apache-spark,pyspark,apache-spark-sql,rdd,Apache Spark,Pyspark,Apache Spark Sql,Rdd,我正在努力掌握Spark中缓存的用例。我把这个概念理解为“它只将RDD保存到内存中”,但一旦执行了一个操作,这不是已经完成了吗 假设我读取一个文本文件并将RDD命名为“df”,然后运行count()作为我的操作。通过这样做,我已经在内存中有了我的RDD,以后可以调用它,那么为什么或者什么时候需要缓存我的RDD呢?是否在使用过滤器的情况下(但过滤器返回一个可以存储为新变量的新RDD) 感谢您的帮助:)当您调用某个操作时,RDD确实会进入内存,但该操作完成后内存将被释放。通过缓存RDD,它将被强制持

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

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


感谢您的帮助:)

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

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