
上篇文章讲过,实时计算相比离线计算来说,多了一个"时间";
引进了这么一个维度,考虑的事情就更多了,怎么去衡量表示时间?数据如果需要按时间做聚合怎么办?数据延迟了怎么办?数据乱序了怎么办?。。。下面就这几个问题来看下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, ProcessTime, IngestionTime三种类型的时间来表示流式系统的时间概念,具体解释如下:

本文探讨Flink的EventTime、ProcessTime、IngestionTime三种时间机制以及窗口分配器、触发器和丢弃器的工作原理。通过实例解析Tumbling和Sliding TimeWindow以及CountWindow,展示了Flink如何处理数据乱序,并对比了SparkStreaming和Storm的时间窗口支持。
最低0.47元/天 解锁文章
989

被折叠的 条评论
为什么被折叠?



