我是Spark的新手。我已经在多个地方读过,在RDD上使用cache()会导致它存储在内存中,但到目前为止我还没有找到明确的指导方针或经验法则。如何确定最大尺寸数据"一个人可以塞进记忆?如果我正在调用的数据量"缓存"在,超过记忆?它会导致我的工作失败,还是会在群集性能受到明显影响的情况下完成?
谢谢!
答案 0 :(得分:7)
正如the official documentation中明确说明MEMORY_ONLY
持久性(相当于cache
):
如果RDD不适合内存,则某些分区将不会被缓存,并且每次需要时都会重新计算。
即使数据适合内存,如果有新数据,也可以逐出数据。实际上,缓存比合同更具隐蔽性。您不能依赖缓存,但如果成功则不必。
注意强>:
请注意,StorageLevel
的默认Dataset
为MEMORY_AND_DISK
,其中包括:
如果RDD不适合内存,请存储不适合磁盘的分区,并在需要时从那里读取它们。
另见: