RDD不存储数据
val rdd: RDD[String] = sc.textFile("datas/apache.log")
val flatRDD: RDD[String] = rdd.flatMap(_.split(" ")
val mapRDD = flatRDD.map(word => {
println("@"*12)
(word,1)
})
val reduceRDD:RDD[(String,Int)] =mapRDD.reduceByKey(_+_)
reduceRDD.collect().foreach(println)
println("*"*12)
val groupRDD = mapRDD.groupByKey() //并没有重用数据,还是从头读取数据
groupRDD.collect().foreach(println)
持久化
cache()
val rdd: RDD[String] = sc.textFile("datas/apache.log")
val flatRDD: RDD[String] = rdd.flatMap(_.split(" ")
val mapRDD = flatRDD.map(word => {
println("@"*12)
(word,1)
})
mapRDD.cache()
val reduceRDD:RDD[(String,Int)] =mapRDD.reduceByKey(_+_)
reduceRDD.collect().foreach(println)
println("*"*12)
val groupRDD = mapRDD.groupByKey() //并没有重用数据,还是从头读取数据
groupRDD.collect().foreach(println)
cache 默认持久化的操作,只能将数据保存到内存中,如果想要保存到磁盘中,需要更改存储级别 持久化操作必须在行动算子执行时完成的
rdd.persist(STorageLevel.DISK_ONLY)
存储级别
使用场景:
1.重用
2.在数据执行较长,或数据比较重要的场合也可以采用