# Spark LongAccumulator 实现详解
Apache Spark 是一个开源大数据处理框架,广泛应用于大规模数据处理、机器学习、图形处理等场景。在这个框架中,Accumlator(累加器)是一种提供状态管理的工具,通过累加器我们可以在分布式计算过程中对数据进行汇总和统计。在众多累加器中,`LongAccumulator` 是用得比较广泛的一种,专用于长整型数据的累加。本文将深入
一、简介为了方便的统计和管理一些共同信息,Spark中定义了两种共享变量——Broadcast(广播变量)和 Accumulator(累加器),可以方便的把一些变量或数据共享给集群各个节点,今天来看看Accumulator。Accumulator是由Driver端总体维护的,读取当前值也是在Driver端,各个Task在其所在的Executor上也维护了Accumulator变量,但只是局部性累加
转载
2023-07-02 18:10:13
35阅读
一、LongAccumulator类 1.和LongAdder之间的关系 LongAdder类是LongAccumulator的一个特例,我们看一下LongAccumulator的一个构造方法 public LongAccumlator(LongBinaryOperator accumulatorF ...
转载
2021-04-28 22:56:21
98阅读
2评论
一、LongAccumulator类1.和LongAdder之间的关系LongAdder类是LongAccumulator的一个特例,我们看一下LongAccumulator的一个构造方法 public LongAccumlator(LongBinaryOperator accumulatorFunction,long identity) {
this.function = accumulat
转载
2021-01-21 18:02:25
223阅读
2评论
文章目录概述概述Java Review - 并发编程_原子操作类原理剖析中提到了 Atomic
原创
2022-01-07 15:05:22
113阅读
文章目录概述概述Java Review - 并发编程_原子操作类原理剖析中提到了 AtomicLong通过CAS提
原创
2021-12-01 09:50:40
5243阅读
每篇一句传播正能量——做一个快乐的程序员前言如题,如果你对AtomicLong的使用、运行机制还不了解的话,请移步我上一篇博文:上一片博文如果你现在是用的JDK还是停留在JDK7及以下,对JDK8没有太多的了解,那么本文的讲述获取能让你又多一个赶紧升级的理由。LongAdder这个类也许很多人闻所未闻,虽然已经使用JDK8很久了。那本文就是要扫盲啦LongAdderDoubleA...
原创
2021-07-16 14:50:53
480阅读
福哥答案2020-10-22:简单回答:相同点:都是多个单元操作。相比于Long
原创
2023-05-12 10:27:30
3115阅读
LongAdder LongAccumulator 用法实例如果程序内有高度的竞争,大量的线程访问同一个原子值,可以使用 LongAdder 和 LongAccumulator,这个类是 Java 8 提供用于在高度竞争环境下替代 AtomicLong 的。 LongAdder adder = ne ...
转载
2021-07-20 23:05:00
134阅读
2评论
一、spark累加器源码以创建一个long类型的累加器为例查看源码
sc.longAccumulator
跟踪这个longAccumulator这个方法进去可以看到/**
* Create and register a long accumulator, which starts with 0 and accumulates inputs by `add`.
*/
def longAc
高并发情况下各种累加器性能测试,包括synchronized、AtomicInteger、AtomicLong、LongAdder、LongAccumulator
原创
2022-06-24 17:38:35
76阅读
目录一.引言二.atomic.LongAccumulator1.构造方法2.使用方法3.创建并使用三.Spark.util.LongAccumulator1.构造方法2.使用方法一.引言使用 Spark 进行大数据分析或相关操作时,经常需要统计某个步骤或多个步骤的相对耗时或数量,java.util 与 spark.util 都提供了原子计数器。如果是 spark on Local ,可以
转载
2023-12-26 16:55:45
44阅读
本文主要内容4种方式实现计数器功能,对比其性能介绍LongAdder介绍LongAccumulator来个需求一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。我们来模拟50个线程,每个线程对计数器递增100万次,最终结果应该是5000万。我们使用4种方式实现,看一下其性能,然后引出为什么需要使用LongAdder、LongAccumulator。方式一:synchronized方式实
转载
2023-06-15 08:21:50
99阅读
效率 线程数特别多的时候 Longadder > Atomic > synchroinzed Longadder内部使用了分段锁 Longadder是LongAccumulator的一种特殊形式 ReentrantLock,synchronized对比 cas vs sync trylock loc
转载
2021-02-23 00:07:00
136阅读
2评论
java环境:jdk1.8。本文主要内容4种方式实现计数器功能,对比其性能介绍LongAdder介绍LongAccumulator需求:一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。我们来模拟50个线程,每个线程对计数器递增100万次,最终结果应该是5000万。我们使用4种方式实现,看一下其性能,然后引出为什么需要使用LongAdder、LongAccumulator。方式一:sy
转载
2023-10-29 07:02:14
31阅读
基本类型原子类数组类型原子类引用类型原子类对象的属性修改原子类原子操作增强类原理深度解析LongAdderLongAccumulator演示高并发下 LongAdder和 LongAccumulator 的性能LongAdder 原理分析LongAdder 的继承关系图Striped64LongAdder 为什么这么快?LongAdder 源码分析add 方法longAccumulate方法su
转载
2024-07-12 13:59:32
104阅读
java版本11.0.1,感觉写得太水了,等心情好的时候再重新编辑一下。 LongAdder中的核心逻辑主要由java.util.concurrent.atomic.Striped64维护,作为Striped64的继承类LongAdder定义了(LongAccumulator、DoubleAdder、DoubleAccumulator...)一些外围逻辑/**
* Cell(单
一、java原子类并发原理 文章目录一、java原子类并发原理1.1 AtomicLong原理解析1.2 LongAdder原理解析1.3 LongAccumulator原理浅析二、java并发包中锁原理(AQS)2.1 LockSupport工具类2.2 抽象同步队列AQS2.2.1 AQS——锁的底层支持2.2.2 AQS——条件变量的支持三、线程池3.1 ThreadPoolExecutor
目录1 LongAdder2 Striped64LongAdder 和 LongAccumulator 基本一致,区别在于前者默认是加法,后者会同时传入一个表达式,具体结果是通过二元表达式计算得到的。DoubleAdder 和 DoubleAccumulator 没有做什么,只是使用 Double.longBitsToDouble 和 Double.doubleToRawLongBits 进行
转载
2023-05-24 20:03:15
0阅读
文章目录1、原子类增强1.1、更快的原子类:LongAdder1. 2、LongAdder功能的增强版:LongAccumulator2、ConcurrentHashMap的增强2.1、forEach操作2.2、reduce操作2.3、条件插入2.4、search操作2.5、其他新方法3、发布订阅模式3.1、简单的发布订阅模式案例3.2、数据处理链 1、原子类增强无锁的原子类操作使用系统的CAS
转载
2024-06-25 17:47:23
84阅读