习题 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,从缓存读取
}
}