Flink 累加器Accumulator
Flink 累加器Accumulator
1.概述
累加器是具有加法运算和最终累加结果的一种简单结构,可在作业结束后使用。
最简单的累加器就是计数器: 你可以使用 Accumulator.add(V value)
方法将其递增。在作业结束时,Flink 会汇总(合并)所有部分的结果并将其发送给客户端。
Flink 目前有如下内置累加器。都实现了累加器接口。
- IntCounter, LongCounter 和 DoubleCounter : 有关使用计数器的示例,请参见下文。
- 直方图 : 离散数量的柱状直方图实现。在内部,它只是整形到整形的映射。你可以使用它来计算值的分布,例如,单词计数程序的每行单词的分布情况。
2.如何使用
如何使用累加器:
首先,在需要使用累加器的用户自定义的转换 function 中创建一个累加器对象(此处是计数器)。
private IntCounter numLines = new IntCounter();
其次,你必须在 rich function 的 open()
方法中注册累加器对象。也可以在此处定义名称。
getRuntimeContext().addAccumulator("num-lines", this.numLines);
现在你可以在操作 function 中的任何位置(包括 open()
和 close()
方法中)使用累加器。
this.numLines.add(1);
最终整体结果会存储在由执行环境的 execute()
方法返回的 JobExecutionResult
对象中(当前只有等待作业完成后执行才起作用)。
myJobExecutionResult.getAccumulatorResult("num-lines")
单个作业的所有累加器共享一个命名空间。因此你可以在不同的操作 function 里面使用同一个累加器。Flink 会在内部将所有具有相同名称的累加器合并起来。
Flink 累加器Accumulator相关推荐
- Spark累加器(Accumulator)陷阱及解决办法
Accumulator简介 Accumulator是spark提供的累加器,顾名思义,该变量只能够增加. 只有driver能获取到Accumulator的值(使用value方法),Task只能对其做增 ...
- Flink的累加器(Accumulator)应用
1. 累加器的简单介绍 累加器是从用户函数和操作中,分布式地统计或者聚合信息.每个并行实例创建并更新自己的Accumulator对象, 然后合并收集器的不同并行实例.在作业结束时由系统合并. 累加器的 ...
- Flink的累加器和广播变量、广播流、分布式缓存
1.Accumulator累加器 Accumulator即累加器,与Mapreduce counter的应用场景差不多,都能很好地观察task在运行期间的数据变化.可以在Flink job任务中的算 ...
- 【FLink源码分析】:Accumulator源码分析
文章目录 Accumulator源码分析学习 Accumulator源码结构 Accumulator 结构 成员方法 SimpleAccumulator 累加器使用案例 code Accumulato ...
- 【Flink】Flink中的窗口API、窗口函数以及迟到数据处理问题
目录 一.窗口 1.窗口的概念 2.窗口的分类 (1)按照驱动类型分类--时间窗口和计数窗口 (2)按照窗口分配数据的规则分类 3.窗口 API (1)按键分区窗口(Keyed Windows) (2 ...
- 四万字!掌握Flink Table一篇就够了
学习工具与软件版本:开发软件IDEA.Flink1.10.2.Kafka2.0.0.Scala2.11 本章建议有一定Flink基础的伙伴学习 Apache Flink介绍.架构.原理以及实现:点击这 ...
- Flink之窗口 (Window) 下篇
窗口函数(Window Functions) 定义了窗口分配器,我们只是知道了数据属于哪个窗口,可以将数据收集起来了:至于收集起来到底要做什么,其实还完全没有头绪.所以在窗口分配器之后,必须再接上一个 ...
- Flink 中的时间和窗口
时间和窗口 一.时间语义 1. Flink 中的时间语义 1.1 处理时间(Processing Time) 1.2 事件时间(Event Time) 1.3 两种时间语义的对比 二.水位线(Wate ...
- Flink学习4-流式SQL
Flink学习4-流式SQL Flink系列文章 更多Flink系列文章请点击Flink系列文章 更多大数据文章请点击大数据好文推荐 摘要 介绍Flink Table Sql API相关概念,还会提供 ...
最新文章
- 4.3.7 ARP协议
- 行星轨迹制作_FLASH做的八大行星的轨道图的教学
- Wang Xifeng's Little Plot (poj 5024 DFS)
- SAP Fiori Elements - bindComponent - binding property in XML view will trigger odata request
- 2018蓝桥杯省赛---java---C---7(缩位求和)
- 对cookie和子cookie操作的封装
- Glassnode:比特币正迎来多年以来最大的流动性枯竭
- 基于IntelliJIdea2020.3创建web项目
- CMD-CMD命令之新建一个用户!
- escape()方法和unescape()方法
- 网络***思路总结 Network penetration ideas
- mysql5.7 64位linux 安装,Linux安装64位Mysql5.7
- 用引流脚本有什么好处,引流脚本是什么意思呢
- 【软件工程】产品调研分析报告
- ​【交通标志识别】基于BP神经网络实现交通标志识别matlab代码
- Fair Resource Allocation in Federated Learning
- PhotoShop彩色图片打印机只有四中颜色操作步骤:
- mysql自学笔记九(Navicat Premium 15)
- 关于导出编辑后的PDF文件中目录带框的情况及解决
- 智能手机的终场战事:小步快跑进入“智慧时代”
热门文章
- 多看阅读设置自动翻页教程
- 关于IE8浏览器下,split()和replace()函数的不兼容问题
- 有密码的PDF文件如何编辑?
- Xilinx SDK下如何进行断点调试(保姆级别教程)
- python 修改excel 路径_python更改已存在excel文件的方法
- 从0开始安装k8s1.25【最新k8s版本——20220904】
- deepstream6.1-YOLOv5部署
- 手工测试2年面临职场危机,3个月进阶自动化测试后,老板终于留我了...
- 编译原理 最新版 (龙书) 简介and sources
- 中超各主场巡礼(国安观赛指南)