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