累加器
顾名思义,累加器是一种只能通过关联操作进行“加”操作的变量,因此它能够高效的应
用于并行操作中。它们能够用来实现counters和sums。Spark原生支持数值类型的累加
器,开发者可以自己添加支持的类型,在2.0.0之前的版本中,通过继
承AccumulatorParam来实现,而2.0.0之后的版本需要继承AccumulatorV2来实现自定义类
型的累加器。
如果创建了一个具名的累加器,它可以在spark的UI中显示。这对于理解运行阶段
(running stages)的过程有很重要的作用。如下图:
在2.0.0之前版本中,累加器的声明使用方式如下:
注:累加器的声明在2.0.0发生了变化(粘贴官方文档代码)
scala> val accum = sc.longAccumulator("My Accumulator")
scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum.add(x))
scala> accum.value
res2: Long = 10