flink窗口的时间戳

时间:2017-05-18 11:03:10

标签: scala apache-kafka apache-flink flink-streaming

我有像

这样的数据流

Eventname, Event id, Start_time ( Time Stamp) ..

这里我想在最后一个字段Start_time上应用窗口转换,这是时间戳,我的要求是我想要获取最近30分钟的数据。

所以我在flink窗口中看到的是这个.timeWindow(Time.minutes(30)),所以我想这需要最近30分钟的事件,但不尊重start_time

我想获取start_time最后30分钟的数据,然后我如何编写转换?我需要使用该列使用filter吗?

我是陌生人。

由于

1 个答案:

答案 0 :(得分:1)

您需要做两件事:

  1. 通过调用setStreamTimeCharacteristic(TimeCharacteristic.EventTime)上的StreamExecutionEnvironment启用事件时处理。
  2. 为记录和水印分配时间戳。这可以通过调用`DataStream.assignTimestamps(yourAssigner)使用AssignerWithPeriodicWatermarksAssignerWithPunctuatedWatermarks来完成。
  3. 在事件时间模式下,Flink将根据您分配给记录的时间戳构建窗口。水印告诉Flink“数据的逻辑时间”。水印为1000表示不再需要时间戳小于1000的记录。

    事件时间处理的整个主题过于复杂,无法在此讨论。我建议看一下Apache Flink documentation

相关问题