习题 16:RDD 缓存

题目:对过滤后的 RDD 进行 cache 缓存,观察两次 action 操作时 filter 的执行次数。

import org.apache.spark.{SparkConf, SparkContext}

object TestCache {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("testcache").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val a = Array("Hadoop", "Spark", "Java", "Python", "JSQ", "C", "C++")
    val rdd = sc.parallelize(a)
    val rddqry = rdd.filter(word => {
      println("过滤操作")
      !word.contains("C")
    })

    rddqry.cache() // 缓存 RDD
    println(rddqry.count()) // 第一次 action,触发计算并缓存
    println(rddqry.collect().mkString(",")) // 第二次 action,从缓存读取
  }
}