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

 

posted on 2016-11-22 09:32  hequn8128  阅读(352)  评论(0编辑  收藏  举报

导航