我有四个事件
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);
此外,您的问题是什么?