这是我参与「第四届青训营 」笔记创作活动的的第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:全局,计数,累计窗口
- 滚动窗口:每个key单独划分,每条数据属于一个窗口
- 滑动窗口:每个key单独划分,每条数据可能属于多个窗口
- 会话窗口:每个key单独划分,每条数据会单独划分一个窗口,如果窗口之间有交集,则会对窗口进行merge
增量vs全量计算
增量:保存计算结果
全量:数据量触发计算
EMIT触发:在window没有结束的时候,提前把window计算的部分结果输出出来