程序结束后如何将缓存表保留在内存中(Apache Spark)?

How can I persist cached tables in memory after the program ends (Apache Spark)?

我是 Apache Spark 的新手,有一个关于 DataFrame 缓存的简单问题。

当我在python中使用df.cache()在内存中缓存一个DataFrame时,我发现程序终止后数据被删除了。

我能否将缓存数据保留在内存中,以便我可以访问下一个 运行 的数据而无需再次执行 df.cache()

如果您正在谈论将 RDD 保存到磁盘中,请使用以下任何一种 -

link 适用于 pyspark,同样适用于 Java/ Scala -#

https://spark.apache.org/docs/latest/api/python/pyspark.sql.html

如果你不是在谈论磁盘,那么 cache() 已经在做将其保存在内存中的工作

cache()一起使用的缓存绑定到当前的spark上下文;其目的是避免在当前应用程序中多次重新计算某些中间结果。如果上下文关闭,缓存就会消失。您也不能在不同的 运行 Spark 上下文之间共享缓存。

为了能够在不同的上下文中重复使用数据,您必须将其保存到文件系统中。如果您更喜欢将结果保存在内存中(或者当您尝试重新加载它们时很有可能保存在内存中),您可以考虑使用 Tachyon.