术语理解
- 什么是streaming流式计算
一种被设计用于处理无限数据集的数据处理引擎 - 什么是无界数据
一种不断增长的本质上无限的数据集 - window在streaming计算中承担/贡献什么样的作用
window是一种切割无限数据为有限块进行处理的手段
Window
Window 类型
- CounterWindow
- TimeWindow
- Tumbling Window(适合BI监控、BI统计)
时间对齐、窗口长度固定、没有重叠 - Sliding Window(对最近一个时间段内的统计,例如求某个接口最近5min的失败率来决定是否要报警)
时间对齐、窗口长度固定、有重叠 - Session Window
是有一系列时间组和一个指定时间长度的timeout间隙组成,类似与web应用的session。也就是一段时间没接受到新数据就会生成新的窗口,时间无对齐,适合用于线上用户行为分析
预定义KeyedWindow
- .timeWindow(Time.seconds(30)) --- Tumbling
- .timeWindow(Time.seconds(30), TIme.seconds(10)) --Sliding
- .countWindow(1000) --- Tumbling count
- .countWindow(1000, 10) --- sliding count
-. window(SessionWindow.withGap(Time.minutes(10)))
Window 聚合分类
- 全量聚合
等属于窗格的数据到齐,才开始进行聚合计算,主要两个函数apply 和 process , 适合九分为、排序
keyBy --> window --> process 这个流程 - 增量聚合
窗格每进入一条数据,就进行一次计算
Time
Time类型
- EventTime
- IngestTime
- ProcessingTime
Time
EventTime And WaterMark
问题:在使用eventtime怎么处理乱序的数据
WaterMark: 水位线
- 参考google的DataFlow
- 是event time处理进度的标志
- 表示比watermark更早的事件都已经到达(没有比水位线更低的数据)
- 基于watermark来进行窗口触发计算的判断