Flink 之 滚动窗口/滑动窗口/会话窗口/OVER窗口

窗口计算离不开水印,即 watermark,关于 watermark 可以看我上一篇文章 Flink 时间属性及 WATERMARK 水印 。

1. 滚动窗口

        滚动窗口(TUMBLE)将每个元素分配到一个指定大小的窗口中。通常,滚动窗口有一个固定的大小,并且不会出现重叠。例如,如果指定了一个5分钟大小的滚动窗口,无限流的数据会根据时间划分为[0:00, 0:05)[0:05, 0:10)[0:10, 0:15)等窗口。

CREATE TEMPORARY TABLE src_kafka (
`create_time` TIMESTAMP(3)  NOT NULL METADATA from 'timestamp',
`offset`    bigINT NOT NULL METADATA from 'offset' ,
`partition` INT NOT NULL METADATA from 'partition' ,
 cs1 STRING,
 ip STRING,
 b STRING,
 t STRING,
 n STRING,
 tm BIGINT,
 event_time as TO_TIMESTAMP(tm),
 watermark for event_time as event_time - INTERVAL '2' SECOND, -- 定义水位线
 PRIMARY KEY (`partition`, `offset`) NOT ENFORCED
) WITH (
  'connector' = 'kafka',
  'topic' = 'ai_log',
  'properties.bootstrap.servers' = 'alikafka',
  'properties.group.id' = 'pyspark-consumer',
   'scan.startup.mode' = 'latest-offset',
  'format' = 'json'
);

SELECT
TUMBLE_START(event_time, INTERVAL '1' MINUTE) as window_start,
TUMBLE_END(event_time, INTERVAL '1' MINUTE) as window_end,
b as platform,
count(distinct cs1) as uv
from src_kafka 
where n = 'ADCompanyShow' 
and cs1 is not null 
GROUP BY TUMBLE(event_time, INTERVAL '1' MINUTE),b
;

        上述案例是要按照 每分钟的滚动窗口来统计埋点事件为 ADCompanyShow 的登录用户数量,以平台维度区分,从上图中可知 web 端每分钟登录用户数具体数值。

2 滑动窗口

滑动窗口(HOP),也被称作Sliding Window。不同于滚动窗口,滑动窗口的窗口可以重叠。

滑动窗口有两个参数:slide和size。slide为滑动步长size为窗口大小

  • slide < size,则窗口会重叠,每个元素会被分配到多个窗口。
  • slide = size,则等同于滚动窗口(TUMBLE)。
  • slide > size,则为跳跃窗口,窗口之间不重叠且有间隙。

通常,大部分元素符合多个窗口情景,窗口是重叠的。因此,滑动窗口在计算移动平均数时很实用。例如,计算过去5分钟数据的平均值,每10秒钟更新一次,可以设置slide为10秒,size为5分钟。

2.1 slide < s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值