累加器只能在Driver定义初始化,不能在Executor端定义初始化。
accumulator相当于集群总统筹大变量
累加器取值accmulator.value 只能在Driver读取,不能在Executor端.value读取值,可以直接accumulator读取值,但没有意义。


import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD object 累加器 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("test") val sc=new SparkContext(conf) //accumulator相当于集群总统筹大变量 val acc=sc.accumulator(0) val rdd1=sc.textFile("words") var i=0 val rdd2=rdd1.map(line=>{ i+=1 acc.add(1) println("---"+acc) line }); rdd2.collect() println("i="+i) println("acc="+acc.value) } }

记住这个网站了
可以
不错
还可以