开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink 事件滑动窗口水位线如何在无数据时自动增加

flink 事件滑动窗口水位线如何在无数据时自动增加,并触发计算

展开
收起
1628082830604996 2023-02-22 09:21:38 1010 2
5 条回答
写回答
取消 提交回答
  • 我这边数据统计需要用到事件事件

    2023-02-26 09:12:07
    赞同 展开评论 打赏
  • 如果需要在无数据时自动增加水位线并确发计算,可以考虑使用processing.time模式。在procssingtime的模式下,窗口的确发是由Flnk系统的系统时间驱动的,而不是事件时间截即使没有数据到达,FIink系统仍然会定期触发窗口计算。

    2023-02-24 12:12:24
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    如果需要在无数据时自动增加水位线并触发计算,可以考虑使用 processing time 模式。在 processing time 模式下,窗口的触发是由Flink系统的系统时间驱动的,而不是事件时间戳,即使没有数据到达,Flink系统仍然会定期触发窗口计算。

    代码可以参考下:

    DataStream<Event> input = ...
    
    // 使用processing time模式定义滑动窗口
    WindowedStream<Event, String, TimeWindow> windowedStream = input
        .keyBy(Event::getKey)
        .window(ProcessingTimeSlidingWindows.of(Time.minutes(5), Time.minutes(1)));
    
    // 定义窗口触发条件
    Trigger<Event, TimeWindow> trigger = ProcessingTimeTrigger.continuousProcessingTime(Duration.ofMinutes(1));
    
    // 定义窗口计算逻辑
    SingleOutputStreamOperator<Result> result = windowedStream
        .trigger(trigger)
        .apply(new MyWindowFunction());
    
    
    2023-02-22 17:31:15
    赞同 1 展开评论 打赏
  • image.png

    2023-02-22 16:33:06
    赞同 展开评论 打赏
  • 可以在窗口函数中注册一个计时器,当计时器触发时,会调用 onTimer() 方法。我们可以在 onTimer() 方法中手动触发计算并更新水位线。

    2023-02-22 11:19:53
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

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