我有四个活动
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")
可以找到完整的单元测试here
答案 0 :(得分:0)
在单元测试中,您似乎打算使用事件时间,但是要做到这一点,您应该使用
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
此外,您有什么问题?