Spark一些基础原理——Cache

lv0

cache是Spark程序设计中比较重要的一环,是对RDD的中间结算结果进行持久化,截断RDD的血统,这种持久化一般是多副本形式存在的。在Task发生调用RDD的compute计算时,其通过iterator进行计算,它会识别是否有缓存数据可以调用,如果没有则通过RDD继续计算;如果有则BlockManager从Local或者Remote获取数据,没获取到再检查checkpoint中的数据,有则获取,没有则进行计算。缓存有两种方式,一种在硬盘中缓存,另一种在内存中缓存。
其中内存缓存空间不足时会清理部分空间放入新的缓存。被清理的数据由BlockManager drop到磁盘上,赋予blockID进行调取,但这种方式得到的数据不一定完整。所以数据丢失后一般会重新进行计算。

你可能感兴趣的:(Spark)