流式计算中的Window机制

流式计算中的Window机制

Window 是什么

在流计算中,数据流是持续不断的,因此不可能等全部数据都到了再开始处理。Window的作用就是将无限的Streaming拆分成大小有限的Batch,我们可以对每个Window里的数据进行应用和计算。

典型Window的基本功能

本文介绍 滚动窗口 、滑动窗口 和 会话窗口

Tumble Window(滚动窗口)

滚动窗口特点:

  • 窗口不重叠,每个数据只能属于一个窗口

  • 窗口长度固定

  • 当时间大于等于Window end时,一次性触发对应的Window的输出

Sliding Window(滑动窗口)

滚动窗口特点:

  • 滑动窗口以一个步长不断向前滑动,窗口的长度固定。

  • 窗口可能重叠

  • 当窗口长度大于滑动窗口的步长,数据就可能属于多个窗口

  • 当窗口长度小于滑动窗口的步长,数据就可能不属于任何窗口

  • 当时间大于等于Window end时,一次性触发对应的Window的输出

Session Window(会话窗口)
  • session gap 指 各个session之间的间隔,一般会设置一个会话的最大gap,比如1分钟,当session gap大于1分钟,数据就会被分到不同的session中。

  • 窗口长度不等

  • 当时间大于等于Window end时,一次性触发对应的Window的输出

迟到数据的处理
  • 迟到的定义:watermark驱动某个窗口触发输出之后,这个窗口如果后面又来了数据,那这种情况就属于是迟到的数据了。

  • 处理办法:

  1. 直接丢弃(默认)

  1. 设置一个允许迟到时间,这种情况下,窗口正常计算时间结束后不会马上清理数据,而是多保留一个“迟到时间”,如果这段时间内有数据到达,则继续计算

  1. 将迟到数据转变成一个单独的流,再由用户自己决定如何处理(侧输出流)

增量计算 和 全量计算
  • 增量计算:每条数据到来后,直接参与计算,但是暂不输出结果

  • 全量计算:每条数据到来后,先放到一个buffer中,这个buffer会存储到状态里,直到窗口触发输出的时候,才把所有数据拿出来统一进行计算

EMIT触发
  • 背景:正常的窗口都是在窗口结束时才会进行输出,比如窗口时间为一天,只有在一天结束时才会输出结果,这时便失去了实时计算的意义。

  • 作用:EMIT触发是一种可以提前把窗口内容输出的机制,比如窗口时间为一天的窗口,设置其5s输出一次,使下游更快的获得到窗口计算的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值