Flink窗口概念Window

概述

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统计等

image

滚动窗口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)))

滑动窗口

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

特点:

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

滑动窗口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间隙组成, 一段时间没有接收到新数据就会生成新的窗口

特点

时间无对齐

image

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值