当前位置:网站首页>Flink accumulator Counter 累加器 和 计数器
Flink accumulator Counter 累加器 和 计数器
2022-08-05 05:14:00 【bigdata1024】
Accumulators(累加器)是非常简单的,通过一个add操作累加最终的结果,在job执行后可以获取最终结果
最简单的累加器是counter(计数器):你可以通过Accumulator.add(V value)这个方法进行递增。在任务的最后,flink会吧所有的结果进行合并,然后把最终结果发送到client端。累加器在调试或者你想更快了解你的数据的时候是非常有用的。
Flink现在有一下内置累加器。每个累加器都实现了Accumulator接口。
- IntCounter, LongCounter 和 DoubleCounter:下面是一个使用计数器的例子。
- Histogram(直方图):针对离线箱子数量的直方图实现。内部是一个map,从integer到integer。你可以使用它来计算分布式的值。例如:分布式的单词统计程序。
如何使用累加器
第一步你需要在你想要使用的地方创建一个自定义的transformation算子,在算子中创建一个累加器对象(在这是一个counter)。
private IntCounter numLines = new IntCounter();第二步你需要注册这个累加器对象,通常在rich函数的open方法里面。在这里你也可以定义一个名字
getRuntimeContext().addAccumulator("num-lines", this.numLines);
现在你可以在任何操作中使用这个累加器,包含open方法和close方法
this.numLines.add(1);最终的总结果将会存储在从execute()中返回的JobExecutionResult对象中。(这个操作需要等待任务执行完成)
myJobExecutionResult.getAccumulatorResult("num-lines")所有的累加器在一个job任务中都是只共享一个单独的命名空间,所以你可以在你的job任务中的不同算子函数中使用相同的累加器,flink内部会合并所有名称相同的累加器。
在使用累加器和迭代器的时候注意:目前累加器的最终结果只能在任务执行结束之后才能获得。我们也计划在下一次迭代的时候返回上一次迭代的结果。你可以使用聚合器来计算每个迭代统计等数据
自定义累加器
实现自定义的累加器只需要实现Accumulator接口即可。随意创建一个pull请求,如果你认为你的自定义累加器应该附加在flink上面。
你可以选择实现Accumulator 或者 SimpleAccumulator
Accumulator<V,R>是最灵活的。它定了一个V类型的值可以进行累加,和一个R类型的值作为最终结果。例如:针对一个直方图,V是一个数字,R是一个直方图。
SimpleAccumulator的情况下,这两种类型都是一样的,例如:counters累加器。
获取更多大数据资料,视频以及技术交流请加群:

边栏推荐
- 2022牛客多校第四场C.Easy Counting Problem(EGF+NTT)
- vscode+pytorch use experience record (personal record + irregular update)
- 【练一下1】糖尿病遗传风险检测挑战赛 【讯飞开放平台】
- day8字典作业
- redis cache clearing strategy
- range函数作用
- Matplotlib(三)—— 实践
- "PHP8 Beginner's Guide" A brief introduction to PHP
- 软件设计 实验四 桥接模式实验
- pycharm中调用Matlab配置:No module named ‘matlab.engine‘; ‘matlab‘ is not a package
猜你喜欢
随机推荐
ES6 Set、WeakSet
The difference between span tag and p
2023 International Conference on Information and Communication Engineering (JCICE 2023)
day11-函数作业
小白一枚各位大牛轻虐虐
Error creating bean with name 'configDataContextRefresher' defined in class path resource
Lecture 4 Backpropagation Essays
Structured Light 3D Reconstruction (2) Line Structured Light 3D Reconstruction
【过一下 17】pytorch 改写 keras
ES6 生成器
第二讲 Linear Model 线性模型
【过一下4】09-10_经典网络解析
Algorithms - ones and zeros (Kotlin)
Basic properties of binary tree + oj problem analysis
Matplotlib(三)—— 实践
SQL(二) —— join窗口函数视图
解决端口占用问题
第三讲 Gradient Tutorial梯度下降与随机梯度下降
Pycharm中使用pip安装第三方库安装失败:“Non-zero exit code (2)“的解决方法
Machine Learning (2) - Machine Learning Fundamentals


![coppercam primer [6]](/img/d3/a7d44aa19acfb18c5a8cacdc8176e9.png)






