如何使用处理时间模型检查流中项目的内部flink时间戳?

时间:2017-09-30 01:36:59

标签: apache-flink

我正在寻找标记我的流中的数据及其到达flink的时间,以便我可以执行一些计算。我知道在使用事件时间模型的时候我可以直接控制它,但是我希望有一些简单的方法来发现flink在流上做出Window决策时使用的Timestamp。

1 个答案:

答案 0 :(得分:0)

Flink支持三种模式与时间一起使用:

  • 处理时间:根据每个运营商的当前时间处理事件
  • 事件时间:事件是与手动分配的时间戳相关的进程。
  • 摄取时间:根据Flink摄取事件时自动分配的时间戳处理事件。

根据您的描述,您似乎正在寻找摄取时间。在内部,摄取时间就像事件时间一样,但不同之处在于时间戳是自动分配的(并且会自动生成水印)。

时间模式通过StreamExecutionEnvironment.setStreamTimeCharacteristic()方法设置。

ProcessFunction之外,事件时间和摄取时间时间戳不会暴露给任何函数。 ProcessFunction可以通过ProcessFunction.processElement()方法在Context.timestamp()中读取事件的时间戳。