Flink KeyedProcessFunction 不调用进程时间逻辑



我有四个事件

UserEvent(id = "customer-1", lat = 1.0 , lng = 0.0 , ts = "2018-10-16T00:00:00.01Z"),
UserEvent(id = "customer-1", lat = 2.0 , lng = 0.0 , ts = "2018-10-16T03:00:00.01Z"),
UserEvent(id = "customer-1", lat = 3.0 , lng = 0.0,  ts = "2018-10-16T04:00:00.01Z"),
UserEvent(id = "customer-1", lat = 4.0 , lng = 0.0 , ts = "2018-10-16T06:00:00.01Z")

我需要输出为

UserEvent(id = "customer-1", lat = 2.0 , lng = 0.0 , ts = "2018-10-16T03:00:00.01Z")
UserEvent(id = "customer-1", lat = 4.0 , lng = 0.0 , ts = "2018-10-16T06:00:00.01Z")

总而言之,我需要在窗口内获取four hour记录。所有事件都由id键控。

我的解决方案涉及使用KeyedProcessFunction.我的程序只发出最后一条记录,如下所示。

UserEvent(id = "customer-1", lat = 4.0 , lng = 0.0 , ts = "2018-10-16T06:00:00.01Z")

完整的单元测试可以在这里找到

从单元测试来看,您似乎打算使用事件时间,但要做到这一点,您应该使用

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

此外,您的问题是什么?

最新更新