- 应用开发
- DataStream API
- 事件时间
事件时间
本文档是 Apache Flink 的旧版本。建议访问 最新的稳定版本。
在本节中,你将学习编写可感知时间变化(time-aware)的 Flink 程序。可以参阅实时流处理小节以了解实时流处理的概念。
有关如何在 Flink 程序中使用时间特性,请参阅窗口和 ProcessFunction 小节。
使用事件时间处理数据之前需要在程序中设置正确的时间语义。此项设置会定义源数据的处理方式(例如:程序是否会对数据分配时间戳),以及程序应使用什么时间语义执行 KeyedStream.window(TumblingEventTimeWindows.of(Time.seconds(30)))
之类的窗口操作。
可以通过 StreamExecutionEnvironment.setStreamTimeCharacteristic()
设置程序的时间语义,示例如下:
注意:为了以事件时间的语义运行上述示例,程序需要满足下列其中一种条件,要么其消费的数据源直接为其数据定义了事件时间并且可以发出 watermark,要么程序必须在数据源之后显示声明时间戳分配器和 Watermark 生成器(Timestamp Assigner&Watermark Generator)。这些函数可以定义 Flink 程序如何获取到事件时间戳以及定义事件流的乱序程度。
接下来学习的内容?
Back to top