1. 累加器和计数器
Flink的Accumulator即累加器,与Spark Accumulator 差不多,都能很好地观察task在运行期间的数据变化
可以在Flink job任务中的算子函数中操作累加器,但是只能在任务执行结束之后才能获得累加器的最终结果。
Counter是一个具体的累加器(Accumulator)实现计数器是最简单的累加器。
内置累加器主要包含以下几类:
1.IntCounter, LongCounter 和 DoubleCounter
2.Histogram(柱状图)
2. 如何使用累加器
第一步:在自定义的转换操作里创建累加器对象:
private IntCounter numLines = new IntCounter();
第二步:注册累加器对象,通常是在rich function的open()方法中。这里你还需要定义累加器的名字getRuntimeContext().addAccumulator(“num-lines”, this.numLines);
第三步:在operator函数的任何地方使用累加器,包括在open()和close()方法中
this.numLines.add(1);
第四步:结果存储在JobExecutionResult里:
JobExecutionResult JobExecutionResult =env.execute("Flink Batch Java API Skeleton")
myJobExecutionResult.getAccumulatorResult("num-lines")