我有像这样的数据流 Eventname, Event id, Start_time ( Time Stamp)
..
这里我想对最后一个字段应用窗口变换 Start_time
这是时间戳,我的要求是我想采取的最后30分钟的数据。
所以我在Flink窗口看到的是 .timeWindow(Time.minutes(30))
所以我想这需要过去30分钟的事件,但不尊重 start_time
我想把数据放在起始时间是最后30分钟的地方,然后我怎么写转换呢?我需要用吗 filter
用那个专栏?
我是Flink的新手。
谢谢
1条答案
按热度按时间mum43rcc1#
你必须做两件事:
通过调用
setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
上StreamExecutionEnvironment
.为记录和水印指定时间戳。这是通过使用
AssignerWithPeriodicWatermarks
或者一个AssignerWithPunctuatedWatermarks
通过调用`datastream.assigntimestamps(yoursigner)。在事件时间模式下,flink将根据您分配给记录的时间戳构建窗口。水印告诉flink“数据的逻辑时间”。水印为1000意味着预计不会再有时间戳小于1000的记录。
事件时间处理的整个主题太复杂,无法在这里讨论。我建议您看看apache flink文档。