TumblingEventTimeWindows(滚动时间窗口)和 SlidingEventTimeWindows(滑动时间窗口)开窗的解析

滚动时间窗口,窗口之间是首尾相接的

滑动事件窗口,窗口之间是有重叠的,也就是说一个事件会出现在不同的窗口 

滚动时间窗口(TumblingEventTime)的开始结束时间是如何计算的呢?一看源码便知:

 红框即为窗口开窗时间

具体计算公式如下:

例如,给定一个时间戳1665103475,窗口大小设定为15s,offset默认为0,

开窗时间:

1665103475 - (1665103475 - 0 + 15000) % 15000  =   1665090000

结束时间: start + this.size 即1665090000 + 15000 = 1665105000

此窗口即为 1665090000 ~ 1665105000

滑动时间窗口(SlidingEventTime)的开始时间,以及一个事件会出现在几个窗口中是如何计算的呢? 

同样来看源码:

一个事件出现在几个窗口的计算公式很简单黑框所示,即窗口大小对滑动步长取整

滑动窗口开始时间的计算方法与滚动窗口相同,但注意最后一个参数不同,滑动窗口最后一个参数为slide(滑动步长),而滚动窗口为side(窗口大小)

还有一个更为重要的区别在于滑动窗口需要循环判断,即红框所示,当计算后的start>timestamp-this.size就需要进入循环计算得出最终滑动窗口的开始结束时间了 

 End

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值