这一章想讲一下Spark的缓存是如何实现的。
这个persist方法是在RDD里面的,所以我们直接打开RDD这个类。
它调用SparkContext去缓存这个RDD,追杀下去。
它竟然是用一个HashMap来存的,具体看这个map的类型是TimeStampedWeakValueHashMap[Int,RDD[_]]类型。
把存进去的值都隐式转换成WeakReference,然后加到一个内部的一个ConcurrentHashMap里面。
这里貌似也没干啥,这是有个鸟蛋用。
。
大神莫喷,知道干啥用的人希望告诉我一下。
现在并没有保存,等到真正运行Task运行的时候才会去缓存起来。
入口在Task的runTask方
1