在定义了窗口分配器之后,我们需要为每一个窗口明确的指定计算逻辑,这个就是窗口函数要做的事情,
                    当系统决定一个窗口已经准备好执行之后,这个窗口函数将被用来处理窗口中的每一个元素(可能是
                    分组的)。
                    谁可以作为窗口函数来使用:

function 优点 缺点
ReduceFunction 更高效,因为在每个窗口中增量地对
每一个到达的元素执行聚合操作(增量
聚合)
场景覆盖不全,无法获取窗口的元
数据
AggregateFunction(max/maxBy…)
FoldFunction(不推荐)
WindowFunction/AllWindowFuncti
on(遗留)
场景覆盖全面,可以拿到窗口的元数
据;
• 相对低效一些,先把属于窗口的
所有元素都缓存,等到该计算了,
全部拿出来再计算;
• 都可跟reducefun、 aggfun、
foldfun组合使用
ProcessWindowFunction/Process
AllWindowFunction
ProcessWindowFunction与前三者
之一组合(混搭)
兼具高效和场景的覆

特别提示:在没有专门说明的情况下,凡是带All的API就是给Non-keyed window使用的

ReduceFunction 含义: ReduceFunction定义了如何把两个输入的元素进行合并来生成相同类型的输出元素的过程,Flink使用ReduceFunction来对窗口中的元素进行增量聚合AggregateFunction

AggregateFunction是ReduceFunction的普适版本,它需要指定三个类型:输入类型(IN)、 累加器类型(ACC)和输出类型(OUT)。
输入类型是输入流中的元素类型,AggregateFunction有一个方法可以将一个输入元素添加到一个累加器中。该接口还具有创建初始累加器、将两个累加器合并到一个累加器以及从累加器中提取输出(类型为OUT)的方法。 (相当于ReduceFunction自定义函数版本)

FoldFunction 含义: FoldFunction指定了一个输入元素如何与一个指定输出类型的元素合并的过程,这个FoldFunction 会被每一个加入到窗口中的元素和当前的输出值增量地调用,第一个元素是与一个预定义的类型为输出类型的初始值合并

WindowFunction/AllWindowFunction(会逐步退出历史舞台)

ProcessWindowFunction/ProcessAllWindowFunction 含义: ProcessWindowFunction获得一个包含窗口所有元素的可迭代器, 以及一个具有时间和状
态信息访问权的上下文对象,这使得它比其他窗口函数提供更大的灵活性。这是以性能和资源消耗为代价的,因为元素不能增量地聚合,而是需要在内部缓冲,直到认为窗口可以处理为止。
•indowFunctionde的升级版,可以跟ReduceFunction /AggregateFunction/FoldFunction结合使用(推荐用法)

在ProcessWindowFunction中使用每个窗口的状态  含义: ProcessWindowFunction可以与ReduceFunction、 AggregateFunction或FoldFunction组
合,以便在元素到达窗口时增量地聚合它们。当窗口关闭时, ProcessWindowFunction将提供聚
合结果。 ProcessWindowFunction可以在访问附加窗口元信息的同时进行增量计算。

flink widow&window funcion&水印的更多相关文章

  1. Flink 的Window 操作(基于flink 1.3描述)

    Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作.本文主要聚焦于在Flink中如何进行窗口操作,以及程序员如何 ...

  2. Flink之Window Operation

    目录 Configuring Time Characteristics Process Functions Window Operators Applying Functions on Windows ...

  3. Flink Window窗口机制

    总览 Window 是flink处理无限流的核心,Windows将流拆分为有限大小的"桶",我们可以在其上应用计算. Flink 认为 Batch 是 Streaming 的一个特 ...

  4. 一张图说清楚Flink水印和Lateness

    真传一句话,假言万卷书. Flink使用窗口与水印处理乱序问题,使用Latenss处理延迟问题,二者混合使用可以满足很多复杂场景的需求 当Watermark大于窗口结束时间时,会触发窗口内的元素进行计 ...

  5. Flink 灵魂两百问,这谁顶得住?

    Flink 学习 https://github.com/zhisheng17/flink-learning 麻烦路过的各位亲给这个项目点个 star,太不易了,写了这么多,算是对我坚持下来的一种鼓励吧 ...

  6. 【翻译】Flink Table Api & SQL —Streaming 概念 ——时间属性

    本文翻译自官网: Time Attributes   https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/str ...

  7. Flink Streaming基于滚动窗口的事件时间分析

    使用flink-1.9.0进行的测试,在不同的并行度下,Flink对事件时间的处理逻辑不同.包括1.1在并行度为1的本地模式分析和1.2在多并行度的本地模式分析两部分.通过理论结合源码进行验证,得到具 ...

  8. 带你玩转Flink流批一体分布式实时处理引擎

    摘要:Apache Flink是为分布式.高性能的流处理应用程序打造的开源流处理框架. 本文分享自华为云社区<[云驻共创]手把手教你玩转Flink流批一体分布式实时处理引擎>,作者: 萌兔 ...

  9. 基于Flink的windows--简介

    新的一年,新的开始,新的习惯,现在开始. 1.简介 Flink是德国一家公司名为dataArtisans的产品,2016年正式被apache提升为顶级项目(地位同spark.storm等开源架构).并 ...

随机推荐

  1. C++——decltype

    , &cj=ci; decltype(ci) x=;//x的类型是const int decltype(cj) y=x;//y的类型是const int & decltype(cj) ...

  2. Ubuntu12.04下Encountered a section with no Package: header错误解决方案

            刚刚想在Ubuntu12.04下安装几个软件,sudo apt-get install libsqlite3-dev automake scratchbox2,没成想出现下面的错误: ...

  3. 【转载】Jmeter业务请求比例1

    ps:文章转自订阅号“测试那点事儿”,链接:https://mp.weixin.qq.com/s/qVD4iNO0QqRIwAIq9_E_Kw 在进行综合场景压测时,由于不同的请求,要求所占比例不同, ...

  4. null == null 或者 [] == [] 或者{} == {} 或者alert(1|| 2) 或者alert(1&& 2) 结果及原理

    相信面试的小伙伴们都会遇到此头大的问题,是不是很想骂一句面试官:你白痴啊,鬼都用不着的东西拿来问,你还别说,这些看似用不着的东西却包含着最基础的原理,那我们来理一理. 1.alert(1||2)和 a ...

  5. python代码技巧总结(更新至17条)

    怎么提高代码水平?答:看牛逼的代码! 牛逼的代码怎么写的?简单,明确,优雅! 怎么简单,明确,优雅?学技巧! 下面搜罗了一些有才格子褂青年的总结,哈哈 1.检查 Python 中的对象 调用 dir( ...

  6. vue 外卖app(2) stylus

    1.安装 npm  install stylus   stylus-loader  --save-dev 安装成功 2.编写样式 <style  lang="stylus" ...

  7. Jmeter-【beanshell处理器】-随机获取手机号

    一.通过操作变量 二.引用外部Java文件 三.引用外部class文件

  8. sed 一 文本处理工具

    简介 sed 采用的是流编辑模式: 最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据. sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行 ...

  9. Delphi StringGrid常用属性和常用操作

    StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事 ...

  10. Dart编程布尔值

    Dart为布尔数据类型提供内置支持.Dart中的布尔数据类型仅支持两个值true和false.关键字bool用于表示DART中的布尔值. 在dart中声明布尔变量的语法如下所示 bool var_na ...