Apache Spark内存缓存

7

Spark将工作数据集缓存在内存中,然后以内存速度执行计算。是否有一种方法来控制工作集在RAM中停留的时间?

我有大量通过作业访问的数据。将作业初始加载到RAM需要时间,当下一个作业到达时,它必须再次将所有数据加载到RAM中,这需要时间。是否有一种使用Spark将数据永久(或指定时间)缓存在RAM中的方法?

2个回答

9

如果要显式取消缓存,可以使用RDD.unpersist()

如果您想在多个作业之间共享缓存的RDD,则可以尝试以下操作:

  1. 使用相同的上下文缓存RDD,并将该上下文用于其他作业。这样,您只需要缓存一次并多次使用它
  2. 存在“Spark作业服务器”来执行上述功能。请查看由Ooyala开源的Spark Job Server
  3. 使用外部缓存解决方案,例如Tachyon

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


0

1
可以通过Java处理吗?通过暂停将RDD加载到缓存中的守护进程的执行来实现吗? - Atom
我不确定手动暂停守护进程是否可行。您是想在连续的作业之间重复使用数据集吗? - Vijay Innamuri
@samthebest,你能帮我理解一下是否有可能将RDD缓存在内存中的特定时间,而不是每次运行新作业时都清除缓存并重新加载吗? - Atom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接