Flink中的Time。
针对流数据中的Time(时间),可以分为以下3种。 1. Event Time:事件产生的时间,它通常由事件中的时间戳描述。 2. Ingestion time:事件进入Flink的时间。 3. Processing Time:事件被处理时当前系统的时间。
这几种时间的对应关系通过这个图可以很清晰的看出来。

原始日志是这样的:
2026-01-01 10:00:01 INFO executor.Executor: Finished task in state 0.0
日志数据进入Flink的时间是:
2026-01-01 20:00:01
日志数据到达Window处理的时间是:
2026-01-01 20:00:02
如果我们想要统计每分钟内接口调用失败的错误日志个数,使用哪个时间才有意义? 因为数据有可能会出现延迟,如果使用 数据进入Flink的时间 或者 Window处理的时间,其实是没有意义的,这个时候需要使用原始日志中的时间才是有意义的,这个才是数据产生的时间。
默认情况下Flink在流处理中使用的时间是ProcessingTime。
查看源码:在类StreamExecutionEnvironment中。
private static final TimeCharacteristic DEFAULT_TIME_CHARACTERISTIC = TimeCharacteristic.ProcessingTime;
想要修改的话可以使用setStreamTimeCharacteristic(…)
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
env.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime)