Flink window 用法介绍(3)

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: Flink window 用法介绍(3)

image.png


适用场景:


适合做BI统计等(每个时间段的聚合计算)




  • 滑动事件窗口


滑动窗口分配器将元素分配到固定元素的窗口中 与滚动窗口类似 
窗口的大小由窗口大小参数配置
另一个滑动窗口参数控制滑动窗口开始的频率
因此滑动窗口如果滑动参数小于窗口大小的话 窗口是可以重叠的
在这种情况下会被分配到多个窗口中
例如:
有10分钟的窗口和5分钟的滑动 那么窗口中每5分钟的窗口里包含着上个10分钟产生的数据


  • 滑动窗口是固定窗口的更广义的一种形式 滑动窗口由固定的窗口长度和滑动间隔组成


  • 窗口的长度固定 可以由重叠


image.png


适用场景:


对最近一段时间内的统计(求某接口最近 5min的失败率来决定是否要报警)


  • 会话窗口


session窗口分配器通过session活动来对元素进行分组 
session窗口根滚动窗口和滑动窗口相比
不会有重叠和固定的开始时间和结束时间的情况 
相反 当它在一个固定的时间周期内不再收到元素 即非活动间隔产生
那么这个窗口就会关闭 
一个session窗口通过一个session间隔来配置 
这个session间隔定义了非活跃周期的长度 当这个非活跃周期产生 那么当前session将关闭并且后续的元素将会被分配到新的session窗口中去


  • 由一系列事件组合一个指定时间长度的timeout间隙组成 类似于web应用的session 也就是一段时间内没有接收到新数据就会生成新窗口


  • 特点:时间无对齐


image.png


  • 计数窗口


  • 滚动计数窗口


  • 滑动计数窗口


Windows API


  • 窗口分配器 window()


可以用 .window()定义一个窗口 
基于这个window去做一些聚合或者其他处理操作
注意:这个方法必须在keyBy之后才能用
Flink提供了更简单的方法 .timeWindow(时间窗口)和.countWindow(计数窗口)


代码


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


  • 窗口分配器(window assigner)


  • 滚动窗口(tumbling window)


  • 滑动窗口(sliding window)


  • 会话窗口(session window)


  • 全局窗口(global window)


  • window方法接受的输入参数是一个 WindowAssigner


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


  • Flink提供了通用的 WindowAssigner


  • 创建不同类型的窗口


- 滚动时间窗口(tumbling time window)
  .timeWindow(Time.seconds(15))
- 滑动事件窗口(sliding time window)
  .timeWindow(Time.seconds(15), Time.seconds(5))
- 会话窗口(session window)
  .window(EventTimeSessionWindows.withGap(Time.minutes(10)))
- 滚动计数窗口(tumbling count Window)
  .countWindow(5)
- 滑动计数窗口(sliding count window)
  .countWindow(10,2)


窗口函数


window function 定义了要对窗口中收集的数据做的计算操作


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


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


  • 全窗口函数(full window functions)


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


其他可选API



  • .trigger()一触即发


定义了window什么时候关闭 触发计算并输出结果


  • .evitor 移除器


定义了移除某些数据的逻辑


  • .allowLateness()


允许处理迟到的数据


  • .sideOutputLateData()


将迟到的数据放入侧输出流


  • .sideOutputLateData()


将迟到的数据放入侧输出流



image.png


相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
SQL 消息中间件 分布式计算
大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动&基于事件驱动
大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动&基于事件驱动
293 0
|
SQL 分布式计算 大数据
大数据-119 - Flink Window总览 窗口机制-滚动时间窗口-基于时间驱动&基于事件驱动
大数据-119 - Flink Window总览 窗口机制-滚动时间窗口-基于时间驱动&基于事件驱动
407 0
|
SQL 存储 Unix
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
216 2
|
10月前
|
缓存 监控 数据处理
Flink 四大基石之窗口(Window)使用详解
在流处理场景中,窗口(Window)用于将无限数据流切分成有限大小的“块”,以便进行计算。Flink 提供了多种窗口类型,如时间窗口(滚动、滑动、会话)和计数窗口,通过窗口大小、滑动步长和偏移量等属性控制数据切分。窗口函数包括增量聚合函数、全窗口函数和ProcessWindowFunction,支持灵活的数据处理。应用案例展示了如何使用窗口进行实时流量统计和电商销售分析。
2016 28
|
分布式计算 Java 大数据
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
140 0
|
SQL 消息中间件 分布式计算
大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce
大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce
174 0
|
SQL 安全 流计算
Flink SQL 在快手实践问题之Group Window Aggregate 中的数据倾斜问题如何解决
Flink SQL 在快手实践问题之Group Window Aggregate 中的数据倾斜问题如何解决
236 1
|
SQL 流计算
Flink SQL 在快手实践问题之使用Dynamic Cumulate Window绘制直播间累计UV曲线如何解决
Flink SQL 在快手实践问题之使用Dynamic Cumulate Window绘制直播间累计UV曲线如何解决
296 1
|
SQL 流计算
Flink SQL 在快手实践问题之Window TVF改进窗口聚合功能如何解决
Flink SQL 在快手实践问题之Window TVF改进窗口聚合功能如何解决
220 1
|
数据处理 调度 双11
Flink四大基石——1.window
Flink四大基石——1.window
145 0

热门文章

最新文章

下一篇
oss云网关配置