Flink 累加器Accumulator

1.概述

累加器是具有加法运算最终累加结果的一种简单结构,可在作业结束后使用。

最简单的累加器就是计数器: 你可以使用 Accumulator.add(V value) 方法将其递增。在作业结束时,Flink 会汇总(合并)所有部分的结果并将其发送给客户端。

Flink 目前有如下内置累加器。都实现了累加器接口。

  • IntCounter, LongCounterDoubleCounter : 有关使用计数器的示例,请参见下文。
  • 直方图 : 离散数量的柱状直方图实现。在内部,它只是整形到整形的映射。你可以使用它来计算值的分布,例如,单词计数程序的每行单词的分布情况。

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相关推荐

  1. Spark累加器(Accumulator)陷阱及解决办法

    Accumulator简介 Accumulator是spark提供的累加器,顾名思义,该变量只能够增加. 只有driver能获取到Accumulator的值(使用value方法),Task只能对其做增 ...

  2. Flink的累加器(Accumulator)应用

    1. 累加器的简单介绍 累加器是从用户函数和操作中,分布式地统计或者聚合信息.每个并行实例创建并更新自己的Accumulator对象, 然后合并收集器的不同并行实例.在作业结束时由系统合并. 累加器的 ...

  3. Flink的累加器和广播变量、广播流、分布式缓存

    1.Accumulator累加器  Accumulator即累加器,与Mapreduce counter的应用场景差不多,都能很好地观察task在运行期间的数据变化.可以在Flink job任务中的算 ...

  4. 【FLink源码分析】:Accumulator源码分析

    文章目录 Accumulator源码分析学习 Accumulator源码结构 Accumulator 结构 成员方法 SimpleAccumulator 累加器使用案例 code Accumulato ...

  5. 【Flink】Flink中的窗口API、窗口函数以及迟到数据处理问题

    目录 一.窗口 1.窗口的概念 2.窗口的分类 (1)按照驱动类型分类--时间窗口和计数窗口 (2)按照窗口分配数据的规则分类 3.窗口 API (1)按键分区窗口(Keyed Windows) (2 ...

  6. 四万字!掌握Flink Table一篇就够了

    学习工具与软件版本:开发软件IDEA.Flink1.10.2.Kafka2.0.0.Scala2.11 本章建议有一定Flink基础的伙伴学习 Apache Flink介绍.架构.原理以及实现:点击这 ...

  7. Flink之窗口 (Window) 下篇

    窗口函数(Window Functions) 定义了窗口分配器,我们只是知道了数据属于哪个窗口,可以将数据收集起来了:至于收集起来到底要做什么,其实还完全没有头绪.所以在窗口分配器之后,必须再接上一个 ...

  8. Flink 中的时间和窗口

    时间和窗口 一.时间语义 1. Flink 中的时间语义 1.1 处理时间(Processing Time) 1.2 事件时间(Event Time) 1.3 两种时间语义的对比 二.水位线(Wate ...

  9. Flink学习4-流式SQL

    Flink学习4-流式SQL Flink系列文章 更多Flink系列文章请点击Flink系列文章 更多大数据文章请点击大数据好文推荐 摘要 介绍Flink Table Sql API相关概念,还会提供 ...

最新文章

  1. 4.3.7 ARP协议
  2. 行星轨迹制作_FLASH做的八大行星的轨道图的教学
  3. Wang Xifeng's Little Plot (poj 5024 DFS)
  4. SAP Fiori Elements - bindComponent - binding property in XML view will trigger odata request
  5. 2018蓝桥杯省赛---java---C---7(缩位求和)
  6. 对cookie和子cookie操作的封装
  7. Glassnode:比特币正迎来多年以来最大的流动性枯竭
  8. 基于IntelliJIdea2020.3创建web项目
  9. CMD-CMD命令之新建一个用户!
  10. escape()方法和unescape()方法
  11. 网络***思路总结 Network penetration ideas
  12. mysql5.7 64位linux 安装,Linux安装64位Mysql5.7
  13. 用引流脚本有什么好处,引流脚本是什么意思呢
  14. 【软件工程】产品调研分析报告
  15. ​【交通标志识别】基于BP神经网络实现交通标志识别matlab代码
  16. Fair Resource Allocation in Federated Learning
  17. PhotoShop彩色图片打印机只有四中颜色操作步骤:
  18. mysql自学笔记九(Navicat Premium 15)
  19. 关于导出编辑后的PDF文件中目录带框的情况及解决
  20. 智能手机的终场战事:小步快跑进入“智慧时代”

热门文章

  1. 多看阅读设置自动翻页教程
  2. 关于IE8浏览器下,split()和replace()函数的不兼容问题
  3. 有密码的PDF文件如何编辑?
  4. Xilinx SDK下如何进行断点调试(保姆级别教程)
  5. python 修改excel 路径_python更改已存在excel文件的方法
  6. 从0开始安装k8s1.25【最新k8s版本——20220904】
  7. deepstream6.1-YOLOv5部署
  8. 手工测试2年面临职场危机,3个月进阶自动化测试后,老板终于留我了...
  9. 编译原理 最新版 (龙书) 简介and sources
  10. 中超各主场巡礼(国安观赛指南)