流计算中的window计算 | 青训营笔记

85 阅读2分钟

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

1.概述

简述流式计算的基本概念,与批式计算相比的难点和挑战

1.1 流式计算vs批式计算

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

1.2批处理

批处理模型典型的数仓架构为T+1架构,即数据计算时天级别的,当天只能看到前一天的计算结果,通常使用的计算引擎为Hive或者Spark等。计算的时候,数据是完全ready的,输入和输出都是确定的

1.3处理时间窗口

实时计算:处理时间窗口

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

1.4处理时间 vs 事件时间

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

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

1.5事件时间窗口

实时计算:事件时间窗口

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

1.6watermark

在数据中插入一些watermark,来表示当前的真实时间

在数据存在乱序的时候,watermark就比较重要了,它可以用来在乱序容忍和实时性之间做一个平衡

2.watermark

watermark的含义,生成方法,传递机制,以及一些典型场景的问题和优化

watermark:表示系统认为的当前真实的时间

3.window

window的基本功能和高级优化

3.1window的基本功能

典型window:滚动,滑动,会话窗口

其他window:全局,计数,累计窗口

  1. 滚动窗口:每个key单独划分,每条数据属于一个窗口
  2. 滑动窗口:每个key单独划分,每条数据可能属于多个窗口
  3. 会话窗口:每个key单独划分,每条数据会单独划分一个窗口,如果窗口之间有交集,则会对窗口进行merge

增量vs全量计算

增量:保存计算结果

全量:数据量触发计算

EMIT触发:在window没有结束的时候,提前把window计算的部分结果输出出来