累加器

当在Driver端定义一个变量后,在Executor内对该变量的修改,对Driver端内的变量是无影响的。想要在Executor中对Driver端的变量进行修改,可以使用累加器

//每次累加整型的值,给累加器起名字:aaa,通过aaa.name可以获取
val aaa = sc.longAccumulator("aaa")
val bbb = sc.longAccumulator
//每次累加小数行的值
val ccc = sc.doubleAccumulator("cccc")
val ddd = sc.doubleAccumulator
def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("test")
    val sc = new SparkContext(conf)
    sc.setLogLevel("ERROR")

    val lines: RDD[String] = sc.textFile("./data/words").repartition(2)

    val aaa = sc.longAccumulator("aaa")
    val bbb = sc.longAccumulator
    val ccc = sc.doubleAccumulator("cccc")
    val ddd = sc.doubleAccumulator

    
    var num = 0
    lines.map(line => {
      aaa.add(1)
      bbb.add(1)
      ccc.add(1.1)
      ddd.add(1.1)
      println(num + ":  " + line)
      num+=1
      num + ": " + line

    }).collect()


    println("aaa:  " + aaa.value + "  " + aaa.name)
    println("bbb:  " + bbb.value + "  " + bbb.name)
    println("ccc:  " + ccc.value + "  " + ccc.name)
    println("ddd:  " + ddd.value + "  " + ddd.name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值