上篇文章讲过,实时计算相比离线计算来说,多了一个"时间";
引进了这么一个维度,考虑的事情就更多了,怎么去衡量表示时间?数据如果需要按时间做聚合怎么办?数据延迟了怎么办?数据乱序了怎么办?。。。下面就这几个问题来看下Flink是如何优雅的设计一套时间&窗口机制来解决这些问题的。
窗口的使用方式:
DataStream input = ;
input.keyBy(new MyKeyselector())
.window(TumblingEventTimeWindows.of(Time.seconds(5))) //assigner
.evictor(TimeEvictor.of(Time.of(2,TimeUnit.SECONDS))) //evictor
.trigger(EventTimeTrigger.create()) //trigger
.allowedLateness(Time.seconds(1))
.apply(new MyWindowFunction())
.addSink(new MySink());
1.flink
时间机制:
Flink提供了EventTime, Proces