缓存中间结果Spark

时间:2018-04-04 04:02:26

标签: apache-spark

我以RDD的形式从数据库中读取一堆记录并执行不同的操作。据我所知,Spark会在转换后自动释放中间RDD数据。它会再读一遍 从源头来看,如果我们将该中间RDD引用到程序的后半部分。这是否意味着它将再次从数据库中读取数据?无论如何,工具建议我们应该缓存哪个中间结果以获得更好的结果?

1 个答案:

答案 0 :(得分:2)

Spark会被懒惰地评估,transformations(及其输出)将不会实现,直到DAG中遇到操作为止。即使persist/cache不是action,也是懒惰的。

如果您的DAG中有action到目前为止(您想要访问中间RDD的点),加上您在中间RDD之前有persist/cache,那么spark将仅从该动作重新计算/缓存点。否则它将再次从数据库中读取。如果您没有任何操作并且绝对想要再次阻止读取数据库,则可以使用saveAsTextFile()并再次阅读。

相关问题