开发者社区> 问答> 正文

如何在Flink减少计算期间获取当前窗口之前的最后一个值

我正在使用Flink 1.6 timeWindow。假设我有以下数据点:

时间戳,价值

12:55:00,10

13:05:00,12

13:30,14

13:59:00,13

14:02:00,17

现在,我的时间窗口是13:00~14:00,如何获取最后一个值,即12:55:00,作为当前窗口计算的初始值?

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

    从广义上讲,有两种方法可以解决这个问题:

    某种自定义窗口
    请改用ProcessFunction
    鉴于窗口API的设计方式,我没有看到任何方法在使用预聚合(即,缩减或聚合)时实现此目的,但我认为您可以使用ProcessWindowFunction和自定义Evictor执行某些操作,或者通过利用ProcessWindowFunction.Context中的globalState来保持一个窗口和下一个窗口之间的状态。

    您可能遇到的一个问题是,如果没有事件落入13:00~14:00的小时,那么将不会创建或评估任何窗口。如果这是一个问题,那么需要进一步定制。

    在大多数涉及非标准窗口的情况下,使用ProcessFunction更简单,更高效。这样,您可以直接控制要保留的状态,并且窗口触发逻辑通常不是很难重新创建。

    2019-07-17 23:19:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载