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类型累加器

少加的情况:

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

多加的情况:

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

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

相关推荐
杨超越luckly18 分钟前
基于地铁刷卡数据分析与可视化——以杭州市为例
大数据·python·阿里云·数据挖掘·数据分析
蜡笔小柯南1 小时前
Elasticsearch 安装教程:驾驭数据海洋的星际导航仪
大数据·elasticsearch·jenkins
寰梦1 小时前
es安装拼音分词后Kibana出现内存错误
大数据·elasticsearch·jenkins
隔着天花板看星星2 小时前
Kafka-broker粗粒度启动流程
大数据·分布式·中间件·kafka
知识分享小能手2 小时前
Java学习教程,从入门到精通,Java 变量命名规则(12)
java·大数据·开发语言·python·学习·java学习·java后端开发
Elastic 中国社区官方博客2 小时前
将你的 Kibana Dev Console 请求导出到 Python 和 JavaScript 代码
大数据·开发语言·前端·javascript·python·elasticsearch·ecmascript
LNTON羚通3 小时前
算法定制LiteAIServer视频智能分析平台裸土检测技术实现、应用场景与优势概览
大数据·算法·目标检测·音视频·监控
旗晟机器人4 小时前
A4-C四驱高防变电站巡检机器人
大数据·人工智能·安全·机器人
小黑034 小时前
Spark SQL
大数据·sql·spark
雪兽软件9 小时前
人工智能和大数据如何改变企业?
大数据·人工智能