Flink KeyedProcessFunction不会在处理时间逻辑上调用

时间:2018-10-16 15:21:42

标签: apache-flink

我有四个活动

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

1 个答案:

答案 0 :(得分:0)

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

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

此外,您有什么问题?