流式计算中的 Window 计算 | 青训营笔记

113 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第四天

流式计算VS批式计算

数据价值:实时性越高,数据价值越高

特性批式计算流式计算
数据存储HDFS、HiveKafka、Pulsar
数据时效性天级别分钟级别
准确性精准精准和时效性之间取舍
典型计算引擎Hive、Spark、FlinkFlink
计算模型Exactly-OnceAt Least Once/Exactly Once
资源模型定时调度长期持有
主要场景离线天级别数据报表实时数仓、实时营销、实时风控

小时级批处理

将调度级别下降到小时级,每小时一次调度,理论上可以实现更实时的数仓,但是每次周期处理调度外还有申请、释放等过程,比较消耗资源。 一般线上数仓任务,计算时间从几分钟到几小时不等,分布不均匀,数仓的建模是分层的,三层五层甚至七层都存在,若所有的数据从产生到计算完成都要求在一个小时内,在很多场景下是做不到的。

处理时间窗口

实时计算:处理时间窗口 数据实时流动,实时计算,窗口结束直接发送结果,不需要周期调度任务。

处理时间VS事件时间

处理时间:数据在流式计算系统中真正处理时所在机器的当前时间。

事件时间:数据产生的时间,比如客户端、传感器、后端代码等上报数据时的时间。

事件时间窗口

实时计算:事件时间窗口 数据实时进入到真实事件发生的窗口中进行计算,可以有效的处理数据延迟和乱序。

Window

基本功能

Window分类

典型的Window:

Tumble Window(滚动窗口)

Sliding Window(滑动窗口)

Session Window(会话窗口)

其它Window:

全局Window

Count Window

累计窗口

滚动窗口

image.png

窗口划分:

每个 key 单独划分
每条数据只会属于一个窗口

窗口触发:
Window 结束时间到达的时候一次性触发

滑动窗口

image.png 窗口划分:

每个 key 单独划分
每条数据可能会属于多个窗口

窗口触发:
Window 结束时间到达的时候一次性触发

会话窗口

image.png 窗口划分:

每个key单独划分
每条数据会单独划分为一个窗口,如果window之间有交集,则会对窗口进行merge

窗口触发:
Window结束时间到达的时候一次性触发