如果数据不能与Spark中的cache()匹配,会发生什么?

时间:2016-02-29 20:18:36

标签: apache-spark cluster-computing distributed-computing

我是Spark的新手。我已经在多个地方读过,在RDD上使用cache()会导致它存储在内存中,但到目前为止我还没有找到明确的指导方针或经验法则。如何确定最大尺寸数据"一个人可以塞进记忆?如果我正在调用的数据量"缓存"在,超过记忆?它会导致我的工作失败,还是会在群集性能受到明显影响的情况下完成?

谢谢!

1 个答案:

答案 0 :(得分:7)

正如the official documentation中明确说明MEMORY_ONLY持久性(相当于cache):

  

如果RDD不适合内存,则某些分区将不会被缓存,并且每次需要时都会重新计算。

即使数据适合内存,如果有新数据,也可以逐出数据。实际上,缓存比合同更具隐蔽性。您不能依赖缓存,但如果成功则不必。

注意

请注意,StorageLevel的默认DatasetMEMORY_AND_DISK,其中包括:

  

如果RDD不适合内存,请存储不适合磁盘的分区,并在需要时从那里读取它们。

另见