- RDD通过persist方法或cache方法可以将前面的计算结果缓存默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中。
- 但是并不是这两个方法被调用时立即缓存而是触发后面的action时,该RDD將会被缓存在计算节点的内存中并供后面重用。
- 通过查看源码发现cache最终也是调用了persist方法默认的存储级别都是仅在内存存储一份,Spark的存儲级别还有好多种存储级别在object StorageLevel中定义的。
在存储级别的末尾加上“_2”来把持久化数据存为两份
缓存有可能丢失或者存储存储于内存的數据由于内存不足而被删除,RDD的缓存容错机制保证了即使缓存丢失也能保证计算的正确执行通过基于RDD的一系列转换,丢失的数据会被重算由于RDD的各个Partition是相对独立的,因此只需要计算丢失的部分即可并不需要重算全部Partition。
(2)将RDD转换为携带当前时间戳不做缓存
(4)将RDD转换為携带当前时间戳并做缓存
(5)多次打印做了缓存的结果