Apache火花在内存缓存中

时间:2014-11-11 05:32:32

标签: java caching apache-spark

Spark将工作数据集缓存到内存中,然后以内存速度执行计算。有没有办法控制工作集驻留在RAM中的时间?

我有大量通过作业访问的数据。最初将作业加载到RAM需要花费时间,当下一个作业到达时,它必须再次将所有数据加载到RAM,这非常耗时。有没有办法使用Spark将数据永久地(或指定的时间)缓存到RAM中?

2 个答案:

答案 0 :(得分:9)

要明确解除隐身,您可以使用RDD.unpersist()

如果要跨多个作业共享缓存的RDD,可以尝试以下操作:

  1. 使用相同的上下文缓存RDD,并将上下文重用于其他作业。这样,您只需缓存一次并多次使用
  2. 有火花作业服务器'存在以执行上述功能。结账Spark Job Server由Ooyala开源。
  3. 使用Tachyon
  4. 等外部缓存解决方案

    我一直在尝试使用Spark中的缓存选项。您可以在此处阅读更多内容:http://sujee.net/understanding-spark-caching/

答案 1 :(得分:0)

您可以为RDD指定缓存选项。 RDD.cache(MEMORY_ONLY)

当没有其他操作需要RDD时,Spark会自动清除。

没有选项可以在指定时间内缓存RDD。

请查看以下链接

http://spark.apache.org/docs/latest/programming-guide.html#which-storage-level-to-choose