说明
转换算子不会执行累加器
行动算子会执行累加器
代码
import org.apache.spark.{SparkConf, SparkContext}
object Std3_zhuanHuanSuanZi {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[*]").setAppName("Application")
//构建Spark上下文对象
val sc = new SparkContext(conf)
val rdd = sc.makeRDD(Array(1,2,3,4,5))
val sum = sc.longAccumulator("sum")
//没有行动算子,累加器不执行
val resRDD=rdd.map(item => sum.add(item))
println("sum="+sum.value)
//调用一次行动算子,累加器就执行一次
resRDD.collect()
println("sum="+sum.value)
//调用几次行动算子,累加器就执行几次
resRDD.collect()
println("sum="+sum.value)
sc.stop()
}
}