介绍
缓存RDD算子计算的结果到本地磁盘或内存中
sc.setCheckpointDir("目录名")
val mapRdd = source.map( item => (item,1))
mapRdd = mapRdd.cache()
mapRdd.checkpoint() // checkpoint也是行动算子
mapRdd.first()
mapRdd.foreach(print)
⚠️ :上面拥有三个行动算子,那么会执行三次 所以需要缓存
cahe()
无法设置存储级别,默认存储在内存中
persist()
能够设置存储级别
如何选择缓存级别?
- 想要CPU效率最高,可以使用默认的存储在内存中
- 如果不是,选择MEMORY_ONLY_SER 将对象序列化后存储
- 存储到磁盘,除非是有大量的过滤,否则重新计算和从磁盘读取的速度一样