【发布时间】:2016-03-30 09:45:05
【问题描述】:
看看这个example:
// We create sessions for each id with max timeout of 3 time units
DataStream<Tuple3<String, Long, Integer>> aggregated = source
.keyBy(0)
.window(GlobalWindows.create())
.trigger(new SessionTrigger(3L))
.sum(2);
谁能解释我为什么在这个例子中使用GlobalWindow 的一个实例(在GlobalWindows#assignWindows 内部创建)?
似乎对于任何传入的事件 ID,都应该创建自己的窗口,即 Window(a) 用于 a 事件,Window(b) 用于 b 事件等,因为据我了解 Flink 正在使用 Window 实例来关联对应的事件例如,所有a 事件都应该与Window(a) 相关联。在这种情况下,只有与Window(a) 关联的所有a 事件将被传递给窗口函数并一起处理(在此示例中,将计算按 ID 分组的事件计数,即按a、b 等),但正如您所看到的,此示例使用GlobalWindow 的一个实例。
【问题讨论】:
标签: apache-flink flink-streaming