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