1.Flink实战之CountWindowr的滚动窗口、滑动窗口WindowsAPI使用示例
2.Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)
Flink实战之CountWindowr的滚动窗口、滑动窗口WindowsAPI使用示例
Flink的窗口机制是数据流处理中一种核心概念,它允许系统对数据流进行分组、聚合和处理。源码课代表窗口可以大致分为两类:CountWindow和TimeWindow。
CountWindow是一种基于数据条数的窗口,与时间无关,而TimeWindow则基于时间生成窗口。TimeWindow又可以进一步细分为滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)和会话窗口(Session Window)。
本文主要介绍CountWindow的两种类型:滚动窗口(Tumbling Window)和滑动窗口(Sliding Window),并提供相应的代码示例。
CountWindow 是根据窗口中相同 key 元素的数量来触发执行的,执行时计算元素数量达到窗口大小的 key 对应的结果。窗口大小是指相同 Key 的元素数量,而非输入元素总数。
### CountWindow 的qca源码编译滚动窗口使用示例
默认的 CountWindow 是滚动窗口,只需指定窗口大小即可。当输入某一个 key 的统计数达到预设值时,就会触发窗口执行。
**示例**:进行分组聚合(keyBy),当输入某一 key 的统计数达到 5 时,输出结果。
**代码示例**:使用终端命令 nc -lk 输入数据,查看效果。
### CountWindow 的编程社区源码滑动窗口使用示例
滑动窗口与滚动窗口在函数名上一致,但传参时需指定两个参数:窗口大小(window_size)和滑动大小(sliding_size)。
**示例**:代码中的 sliding_size 设为 2,每收到两个相同 key 的数据即计算一次。计算的窗口范围为最近输入的 5 个元素。每当某 key 的个数达到 2 时,触发计算,计算最近 个输入 key 的统计。
**代码示例**:终端命令 nc -lk 输入数据,查看效果,hms core 源码输入 次 "hello",每遇到前后输入有 2 次 "hello" 即计算一次,计算范围为最近 次有 "hello" 输入的统计。
本文仅提供对 Flink 窗口机制的简要介绍及示例,后续将撰写更多关于 Flink Table API 和 SQL 的实战应用文章。欢迎关注,共同进步。
如果觉得文章对您有帮助,请关注微信公众号:“大数据技术天涯”。netstat命令源码
持续分享 Java 微服务、大数据、人工智能等领域的原创文章。
Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)
Flink作为实时流处理引擎,其核心概念围绕流式和实时计算展开。其中,时间(Time)与窗口(Window)是不可或缺的部分,它们决定了数据处理的边界和时序逻辑。Time与Window详解
Flink中的时间分为三种类型,处理流式数据时,事件时间(eventTime)尤为重要。通过Window,无限数据流被划分成有限的处理块,如滚动窗口、滑动窗口和会话窗口,分别对应固定时间长度和数据量划分边界。滚动窗口:固定时间长度,无重叠,适用于统计每个时间段的聚合。
滑动窗口:固定时间长度,有重叠,适用于近段时间内统计。
会话窗口:基于事件活动时间,无固定长度和开始时间,适用于会话行为的分析。
例如,计算每秒内汽车通过红绿灯的数量,Flink可能使用TimeWindow,数据发送方通过nc模拟,Flink使用Processing Time处理默认数据。CountWindow与Apply
CountWindow基于窗口内相同key的数量触发计算,而Apply则允许自定义处理,适用于复杂计算,如单词统计。Watermark与EventTime
<Flink处理乱序数据时引入了Watermark,它结合EventTime和Window确保数据在特定时间触发处理,即便存在网络延迟和乱序。允许的迟到时间可通过allowedLateness设置,迟到数据会被保存和获取以进行后期处理。