【问题标题】:How can I persist cached tables in memory after the program ends (Apache Spark)?程序结束后如何将缓存表保存在内存中(Apache Spark)?
【发布时间】:2015-07-08 11:23:08
【问题描述】:

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

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

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

【问题讨论】:

  • 您的意思是要写入磁盘吗?采用什么格式?

标签: mapreduce apache-spark pyspark


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    该链接适用于 pyspark,同样适用于 Java/Scala-#

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 2013-09-20
      • 2021-09-03
      • 2017-10-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多