Spark Accumulators

概述

Accumulator即累加器,与Mapreduce counter的应用场景差很少,都能很好地观察task在运行期间的数据变化,Spark中的Accumulator各task能够对Accumulator值进行累加,可是最终的返回值只能在Driver端获取,同时原生支持Int和Double类型的Accumulator,也支持对Accumulator自定义类型及命名,以便咱们更好的对程序进行调优工具

Accumulator能解决哪些问题?

1.能精确地统计数据的各类属性。例如能够统计出符合user ID的记录数,在一个时间段内产生了多少次购买,一般咱们在ETL使用Accumulator去统计出各类属性的数据spa

2.轻量级的调试工具,能观测到每一个task的信息。如经过Accumulator能够在Spark UI观测到每一个task所处理的记录数,以下图 调试

 

3.从集群的资源利用率来精确的测量出Spark应用的资源利用率,如经过Accumulator能够很以知道有多少的数据是来自HDFS,shuffle所处理的数据量如何以及RDD的从新计算次数,这些都是咱们Spark应用调优的有利信息orm

使用Accumulator的注意事项

在Action算子中更新Accumulator,Spark保证在每一个task对Accumulator只进行一次累加,即使是task重启也是如此,但注意在若是Accumulator是在transformation算子进行累加的,那么一旦task失败或被重启,则Accumulator会被累加屡次blog

相关文章
相关标签/搜索