题记部分

一、Flink中的窗口是什么

(1)一般真实的流都是无界的,怎样处理无界的数据?

(2)可以把无限的数据流进行切分,得到有限的数据集进行处理 —— 也就是得到有界流

(3)窗口(Window)就是将无限流切割为有限流的一种方式,它会将流数据分发到有限大小的桶(bucket)中进行分析。

二、窗口类型

(1)时间窗口(Time Window)

  ① 滚动时间窗口(tumbling time window):.timeWindow(Time.seconds(15))

  ② 滑动时间窗口(sliding time window):.timeWindow(Time.seconds(15),Time.seconds(5))

  ③ 会话窗口(session window):.window(EventTimeSessionWindows.withGop(Time.minutes(10)))

(2)计数窗口(Count Window)

  ① 滚动计数窗口(tumbling count window):.countWindow(5)

  ② 滑动计数窗口(sliding count window):.countWindow(10,2)

2.1、滚动窗口(Tumbling Windows)

2.2、滑动窗口(Sliding Windows)

2.3、会话窗口(Session Windows)

三、Window API

(1)窗口分配器 —— window()方法

(2)我们可以用.window()来定义一个窗口,然后基于这个window去做一些聚合或者其它处理操作。

(3)window()方法必须在keyBy之后才能使用。

(4)Flink提供了更加简单的.timeWindow.countWindow方法,用于定义时间窗口和计数窗口。

val minTempPerWindow = dataStream
.map(r => (r.id,r.temperature))
.keyBy(_._1)
.timeWindow(Time.seconds(15))
.reduce((r1,r2) => (r1._1,r2.min(r2._2)))

四、窗口分配器

(1)window()方法接收的输入参数是一个WindowAssigner

(2)WindowAssigner负责将每条输入的数据分发到正确的window中

(3)Flink提供了通用的WindowAssigner

  ① 滚动窗口(tumbling window)

  ② 滑动窗口(sliding window)

  ③ 会话窗口(session window)

  ④ 全局窗口(global window)

五、窗口函数

window function定义了要对窗口中收集的数据做的计算操作,可以分为两类

(1)增量聚合函数(incremental aggregation functions)

  • 每条数据到来就进行计算,保持一个简单的状态
  • ReduceFunction、AggregateFunction

(2)全窗口函数(full window functions)

  • 先把窗口所有数据收集起来,等到计算的时候会遍历所有数据
  • ProcessWindowFunction

六、其他API

(1).trigger():触发器,定义window什么时候关闭,触发计算并输出结果;

(2).evitor():移除器,定义移除某些数据的逻辑;

(3).allowedLateness():允许处理迟到的数据

(4).sideOutputLateData():将迟到的数据放入侧输出流

(5).getSideOutput():获取侧输出流

— 业精于勤荒于嬉,行成于思毁于随 —

Flink - [04] 窗口(Windows)的更多相关文章

  1. DB 查询分析器 6.04 在 Windows 10 上的安装与运行展示

    DB查询分析器 6.04 在 Windows 10 上的安装与运行展示 中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员 http://www.csdn.net/art ...

  2. Ubunut18.04与Windows传输文件的方式

    ubunut18.04与Windows传输文件的方式 开发环境:ubuntu18.04; 虚拟机:virtual box; 操作系统:Win10_64bits/专业版 在以前使用的ubuntu12.0 ...

  3. 【源码解析】Flink 滑动窗口数据分配到多个窗口

    之前一直用翻滚窗口,每条数据都只属于一个窗口,所有不需要考虑数据需要在多个窗口存的事情. 刚好有个需求,要用到滑动窗口,来翻翻 flink 在滑动窗口中,数据是怎么分配到多个窗口的 一段简单的测试代码 ...

  4. Flink(八)【Flink的窗口机制】

    目录 Flink的窗口机制 1.窗口概述 2.窗口分类 基于时间的窗口 滚动窗口(Tumbling Windows) 滑动窗口(Sliding Windows) 会话窗口(Session Window ...

  5. 关于在windows10中的vmware9.0里面安装的ubuntukylin15.04和windows共享目录的一些反思

    关于在windows10中的vmware9.0里面安装的ubuntukylin15.04和windows共享目录的一些反思 一.遇到的问题      如题目所说,在windows的虚拟机中和windo ...

  6. Flink会话窗口测试

    Flink会话窗口测试 一.测试结论: 1.会话窗口的间隔时间和水位线作用一样,表示输出现在时间 - 间隔时间之前所有未结算时间的数据,作用类似于水位线,但是和水位线开闭不一样. 2.会话窗口显示的数 ...

  7. ubuntu 16.04 和 windows 10系统安装mysql 允许远程访问 | mysql user guide on ubuntu 16.04 and windows 10

    本文首发于个人博客https://kezunlin.me/post/36e618e7/,欢迎阅读! mysql user guide on ubuntu 16.04 and windows 10 Pa ...

  8. Flink的窗口处理机制(一)

    一.为什么需要 window ? 在流处理应用中,数据是连续不断的,即数据是没有边界的,因此我们不可能等到所有数据都到了才开始处理.当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处 ...

  9. Flink Window窗口机制

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

  10. flink入门实例-Windows下本地模式跑SocketWordCount

    一般情况下,开发大数据处理程序,我们希望能够在本地编写代码并调试通过,能够在本地进行数据测试,然后在生产环境去跑“大”数据. 一.nc工具 配置windows的nc端口,在网上下载nc.exe(htt ...

随机推荐

  1. 浅聊web前端性能测试

    最近正好在做web前端的性能测试,这次就来聊聊关于这个的测试思路~ 首先从用户的思维去思考,关于web前端性能,用户最看重的是什么...... 其实就是下面三个点: 1. 加载性能(即页面加载时间+资 ...

  2. 【转载】用shell命令一步步获取Java版本号

    https://blog.csdn.net/f20052604/article/details/100269768 1.打印java -version命令echo $(java -version)输出 ...

  3. 记住我 token保存到数据库

    这里使用jpa+mysql <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  4. springboot~多节点应用里的雪花算法唯一性

    雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是 ...

  5. C Primer Plus 第6版 第七章 编程练习参考答案

    编译环境VS Code+WSL GCC 源码请到文末下载 . 注意:本章部分题目有些超纲(回用到函数调用),不理解的同学可以先去看一下后面的知识点和注释. /*第1题***************** ...

  6. Note - 两类容斥

    \(\S1.\) 等价容斥   (乱取的名字.)   题目将组合对象构成的 "等价类" 进行了定义和限定. 我们往往无法计数 "等价类真的长这样" 的方案, 而 ...

  7. Java线程的通信

    当需要多个线程共同完成一件任务,而且需要有规律的执行,那么多个线程之间需要一定的通信机制,可以协调他们的工作,以此实现多线程共同操作一份数据. 1 等待唤醒机制 这是一种线程间的协作机制,与争夺锁的竞 ...

  8. Gitblit 服务器IP变更

    当Gitblit服务器的IP地址发生变化时,只需将项目中 ./git/config 文件中的 url改为新的IP即可.

  9. 0101-win10 jkd配置注意事项

    更换新的电脑预装win10家庭版,根据常规方法配置jdk8后运行javac提示:不是内部或外部命令,也不是可运行的程序或批处理文件. 1 设置变量classpath时前面有个点(完成这一步后javac ...

  10. Svelte 最新中文文档翻译(5)—— 基础标记

    前言 Svelte,一个非常"有趣".用起来"很爽"的前端框架.从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 ...