如上图所示,当前的spark程序把所有的完全数据缓存在内存中,使用rdd.cache或者rdd.persist(MEMORY_ONLY)完成。
但是,如果集群内存不足以存入所有的数据的话,rdd读入后不要做任何persist就好了,这样每次迭代计算都要从磁盘中读入数据并计算得到结果,可以节省缓存数据的内存,当然这是以浪费时间为代价。这样使用的spark相当于在使用mapreduce计算,不能发挥spark的优势,如无必要切勿使用。
如上图所示,当前的spark程序把所有的完全数据缓存在内存中,使用rdd.cache或者rdd.persist(MEMORY_ONLY)完成。
但是,如果集群内存不足以存入所有的数据的话,rdd读入后不要做任何persist就好了,这样每次迭代计算都要从磁盘中读入数据并计算得到结果,可以节省缓存数据的内存,当然这是以浪费时间为代价。这样使用的spark相当于在使用mapreduce计算,不能发挥spark的优势,如无必要切勿使用。