介绍

缓存RDD算子计算的结果到本地磁盘或内存中

  1. sc.setCheckpointDir("目录名")
  2. val mapRdd = source.map( item => (item,1))
  3. mapRdd = mapRdd.cache()
  4. mapRdd.checkpoint() // checkpoint也是行动算子
  5. mapRdd.first()
  6. mapRdd.foreach(print)

⚠️ :上面拥有三个行动算子,那么会执行三次 所以需要缓存

cahe()

无法设置存储级别,默认存储在内存中

image.png

persist()

能够设置存储级别

如何选择缓存级别?

  1. 想要CPU效率最高,可以使用默认的存储在内存中
  2. 如果不是,选择MEMORY_ONLY_SER 将对象序列化后存储
  3. 存储到磁盘,除非是有大量的过滤,否则重新计算和从磁盘读取的速度一样

image.png

image.png