开发者社区 问答 正文

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窗口中获取最新记录。所有事件都是keyd by id。

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

UserEvent(id = "customer-1", lat = 4.0 , lng = 0.0 , ts = "2018-10-16T06:00:00.01Z")
完整的单元测试可以在这里找到

展开
收起
flink小助手 2018-12-06 17:19:31 4646 分享 版权
1 条回答
写回答
取消 提交回答
  • flink小助手会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关flink的问题及回答。

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

    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
    此外,你的问题是什么?

    2019-07-17 23:18:37
    赞同 1 展开评论