Flink窗口概念Window
  5inlEEFCT2X0 2023年11月02日 113 0


概述

Streaming 流式计算是一种被设计为用于处理无线数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window是一种切割无限数据为 有限块 处理的手段

常用于统计某段时间内某网站点击量等

window组成

每个窗口算子中包含了

  1. Windows Assigner
  2. WIndows Trigger(窗口触发器)
  3. Evictor(数据剔除器)
  4. Lateness(时延设定)
  5. OutputTag(输出标签)
  6. Windwos Function(窗口计算函数)

其中WIndows Assigner 和Windows Function是所有窗口算子必须指定的属性

Windows Assigner

运用窗口计算时,FLink会根据上游数据集是否按照key分区进行不同的调用,如果按照key分区,则是KeyedStream, 则调用DataStream API 的Window()方法指定Windows Assigner, 如果没有按照key 分区,则是Non-keyed类型,调用WindowsAll()方法指定 Windows Assigner, 计算并得到全局统计结果

inputStream.keyBy(input=>input.id).window(newMyWindowsAssigner())
//对于DataStream数据集,直接调用windowALL指定Windows Assigner
imputstream.windowAll(new MyAllWindowsAssigner())

Window类型

  • CountWindow: 按照指定的数据条数生成一个Window,与时间无关
  • TImeWindow: 按照时间生成window

对于TimeWindow,可以根据窗口实现原理的不同分成三类: 滚动窗口,滑动窗口和会话窗口

滑动窗口

特点

时间对其,窗口长度固定,没有重叠(多个窗口之间不会重叠,以window size划分某个窗口)

适用场景:

适合做BI统计等

Flink窗口概念Window_滑动窗口

滚动窗口API

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)))

滑动窗口

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

特点:

时间对齐,窗口长度固定,有重叠 

Flink窗口概念Window_数据集_02

滑动窗口API

val minTempPerWindow: DataStream[(String, Double)] = dataStream
.map(r => (r.id, r.temperature))
.keyBy(_._1)
.timeWindow(Time.seconds(15), Time.seconds(5))
.reduce((r1, r2) => (r1._1, r1._2.min(r2._2)))

会话窗口

由一系列事件组合一个指定长度的timeout间隙组成, 一段时间没有接收到新数据就会生成新的窗口

特点

时间无对齐

Flink窗口概念Window_滑动窗口_03

CountWindow

根据窗口中相同key元素的数据量来触发执行,执行时只计算元素数量达到窗口大小的key对应的结果

计算相同key的个数

val minTempPerWindow: DataStream[(String, Double)] = dataStream
.map(r => (r.id, r.temperature))
.keyBy(_._1)
.countWindow(5).reduce((r1, r2) => (r1._1, r1._2.max(r2._2)))

Window Function

  1. ReudeFunction: reduce()
  2. AggregateFuntion
  3. Fold Function
  4. ProcessWindow Function
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
5inlEEFCT2X0
最新推荐 更多