streaming group window源码分析
概述
主要分析flink streaming流程中,group window的设计和实现。
一、功能设计
group window主要实现功能如下:
val res = tab .groupBy(‘a) // leave groupBy-Clause out to define non-keyed / global windows .window(w: Window) .select(‘a, ‘b.sum, ‘w.start, ‘w.end)
其中w:window格式定义为(选取tumbling window):
Tumbling Event-time window: .window(Tumble over 10.minutes on ‘rowtime as ‘w) Tumbling Processing-time window: .window(Tumble over 10.minutes as ‘w) Tumbling Row-count window: .window(Tumble over 10.rows)
二、源码分析
2.1 group window对象定义
groupWindow.scala
定义了三种类型的window:Tumble、Slide、Session,分别支持over、withGap方法。
window.scala
groupwindow中初始化时会调用window中相应的对象初始化函数。
对应
.window(Tumble over 10.minutes on ‘rowtime as ‘w)
Tumble over 10.minutes创建TumblingWindow,on 'rowtime创建TumblingEventTimeWindow
2.1 Expressions