Spark_累加器

分布式共享只写变量

实现原理:

累加器用来把Executor端变量信息聚合到Driver端,在Driver程序中定义的变量,在Executor端的每个Task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回Driver端进行merge

// Spark默认就提供了简单数据聚合的累加器

scala 复制代码
   val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
    val sc = new SparkContext(sparkConf)
    val rdd = sc.makeRDD(List(1,2,3,4))

    val sumAcc: LongAccumulator = sc.longAccumulator("sum")

    rdd.foreach(
      num => {
        sumAcc.add(num)
      }
    )

    val value: lang.Long = sumAcc.value
    print(value)

还有double,collection类型累加器

少加的情况:

转换算子中调用累加器,如果没有行动算子的话,那么不会执行

多加的情况:

转换算子中调用累加器,行动算子多次执行导致多加

一般情况下,累加器会放置在行动算子中

相关推荐
对许37 分钟前
Hadoop的运行模式
大数据·hadoop·分布式
天空卫士1 小时前
AI巨浪中的安全之舵:天空卫士助力人工智能落地远航
大数据·人工智能·安全·网络安全·数据安全
带娃的IT创业者2 小时前
《Python实战进阶》No18: 使用 Apache Spark 进行分布式计算
python·spark·apache
Clrove.113 小时前
JavaWeb——Ajax
前端·javascript·ajax
SelectDB技术团队3 小时前
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升
大数据·数据库·云原生·doris·存算分离
神秘打工猴6 小时前
数据仓库为什么要分层
大数据·数据仓库·spark
Hard_pea6 小时前
Spark 深入解析
大数据·分布式·spark
猪猪果泡酒6 小时前
spark yum配置
spark
闯闯桑7 小时前
Scala 中的访问修饰符
大数据·开发语言·scala
后端小肥肠7 小时前
解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统
大数据·人工智能