Spark 累加器

1年前 (2020-03-18) 389次浏览 已收录 4个评论

累加器只能在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)
    
  }
}


渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spark 累加器
喜欢 (0)

您必须 登录 才能发表评论!

(4)个小伙伴在吐槽
  1. 记住这个网站了
    hello2020-03-28 16:51
  2. 可以
    努力2020-03-28 17:16
  3. 不错
    小白2020-03-28 17:42
  4. 还可以
    你哥2020-03-29 18:19