Apache kafka 卡夫卡流:如何基于跳跃窗口触发事件,以及如何基于作为跳跃窗口一部分的组合窗口集触发事件

Apache kafka 卡夫卡流:如何基于跳跃窗口触发事件,以及如何基于作为跳跃窗口一部分的组合窗口集触发事件,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,这是我们的拓扑结构: 测试事件-->groupByKey-->窗口聚合-->抑制-->过滤器-->重新设置密钥 这里是流程 我们有1分钟的跳跃时间。总窗口大小为5分钟。跳跃窗口每5分钟评估一次,如何获得每1分钟跳跃的计数 总时间为5分钟,跳跃持续时间为1分钟 1. How to TRIGGER some event based on 1 min HOP 2. How to TRIGGER some event based on TOTAL 5 min WINDOW ||-----||

这是我们的拓扑结构:

测试事件-->groupByKey-->窗口聚合-->抑制-->过滤器-->重新设置密钥

这里是流程

我们有1分钟的跳跃时间。总窗口大小为5分钟。跳跃窗口每5分钟评估一次,如何获得每1分钟跳跃的计数

总时间为5分钟,跳跃持续时间为1分钟

1. How to TRIGGER some event based on 1 min HOP

2. How to TRIGGER some event based on TOTAL 5 min WINDOW


   ||-----||----||-------||------||-----|

          ||-----||----||-------||------||-----|
我们想做两件事

  • 我们希望统计1分钟跳频窗口中的事件总数。如果事件总数大于某个阈值,则为该1分钟跳频窗口触发一个组合事件

  • 然后,如果组合事件的计数大于某个数字,我们希望触发警报

  • 来自卡夫卡窗口API

    Code looks like this:
    KStream<String, DataPointUri> KS0 = builder.stream(inputTopicsList,);
    KGroupedStream<String, DataPointUri> KS1 = KS0.groupByKey();
    Duration windowDuration =getDuration(...)); 
    Duration hopDuration =getDuration(env.getProperty(...)));
    TimeWindowedKStream<String, DataPointUri> KS2 = KS1.windowedBy(TimeWindows.of(windowDuration).advanceBy(hopDuration).grace(Duration.ofSeconds(10)));
    KTable<Windowed<String>, Long> uriCount = KS2.count(Materialized.<String, Long, WindowStore<Bytes, byte[]>>with(Serdes.String(), Serdes.Long()));
    
    代码如下所示:
    KStream KS0=builder.stream(InputOpicsList,);
    KGroupedStream KS1=KS0.groupByKey();
    Duration windowDuration=getDuration(…);
    Duration hopDuration=getDuration(env.getProperty(…));
    TimeWindowedKStream KS2=KS1.windowedBy(TimeWindows.of(windowDuration).advanceBy(hopDuration).grace(Duration.of秒(10));
    KTable uriCount=KS2.count(具体化的.with(Serdes.String(),Serdes.Long());
    
    在这里,我们得到了5分钟窗口计数。不适用于跳跃1分钟窗口。如何获取1分钟窗口的详细信息