Spark-累加器Accumulator图文详解

Spark-Accumulator

Spark中的累加器是用于在分布式计算中进行全局统计的工具。它以用于累积一些数据,比如计数器或求和器。

累加器主要用于在集群中的所有任务完成后,合并这些任务的结果。

Spark支持多种类型的累加器,例如整数和浮点数,但要注意,它们只能由驱动程序读取,任务节点不能修改累加器的值。


累加器的"只写"特性

累加器在Spark中被设计为"只写"的。累加器的值只能被添加或更新,而不能被直接读取。

  1. 写入操作

    累加器的值只能通过add方法在分布式任务中更新。

    scala 复制代码
    accumulator.add(5)

    这种设计确保了累加器在多个任务并行执行时的线程安全和一致性。

  2. 读取操作

    累加器的最终值只能在驱动程序中读取,而不是在分布式任务中。

    scala 复制代码
    println(s"Accumulator value: ${accumulator.value}")

    这种设计是为了避免任务中的中间计算结果对累加器的读取,确保累加器的值只在任务执行结束后被汇总和读取。

scala 复制代码
var errorLines = sc.accumulator(0, "Error Lines")

sc.textFike("file.txt").foreach { line =>
    
	----   process lines ----
	
    if( error )
	    errorLines += 1

}

println(s"Lines with Bugs=${errorLines.value}");
相关推荐
Mephisto.java1 分钟前
【大数据学习 | Spark-Core】RDD的五大特性(包含宽窄依赖)
大数据·学习·spark
十二点的泡面4 分钟前
spark 写入mysql 中文数据 显示?? 或者 乱码
大数据·mysql·spark
二进制_博客35 分钟前
Yarn中多队列的配置以及更换公平调度器
大数据
zmd-zk2 小时前
kafka命令的使用——主题命令(topic)
大数据·分布式·学习·kafka
飞天大拖把2 小时前
RabbitMQ
分布式·rabbitmq
shiming88792 小时前
RabbitMQ高级特性:TTL、死信队列与延迟队列
分布式·rabbitmq·ruby
易云码3 小时前
医疗数据质量安全,数据安全解决方案,医院关心的数据安全问题,信息安全方案(Word原件)
大数据·数据仓库·安全·系统安全·智慧城市
人不走空3 小时前
【Zookeeper 和 Kafka】为什么 Zookeeper 不用域名?
分布式·zookeeper·kafka
斑驳竹影3 小时前
Zookeeper实现分布式锁、Zookeeper实现配置中心
分布式·zookeeper·云原生
Natural_yz3 小时前
大数据学习18之Spark-SQL
大数据·学习·spark