什么是合并两个时间窗的最佳模式

时间:2018-12-19 07:26:16

标签: apache-kafka-streams

我有一个TimeWindowed KTable

stream.table("topicA")
      .groupByKey()
      .windowedBy(TimeWindows.of(TimeUnit.HOURS.toMillis(1L))
      .until(TimeUnit.DAYS.toMillis(1L)))
      .reduce((value1, value2) -> value2,
              Materialized.as("A-Store"))

现在我在TopicA中放置了4个事件,

key1 Event1 currentTime -90 min
key2 Event2 currentTime -45 min
key1 Event3 currentTime -30 min
key3 Event4 currentTime -15 min

如果我使用以下命令从KTable中获取事件,则不会

fetchAll(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2),
         System.currentTimeMillis())

按预期,我从商店收到了4个事件,其中包括两个key1事件在不同的时间范围内传递...

现在,KTable正常操作模式始终为该键传递最新事件,我该如何应对这种情况?当然,我可以创建一个Map并在其中插入事件,然后重新收集,但这似乎很笨拙。

是否有更好的方法来处理此问题,以便从2个不同的时间窗口收集数据并将其合并?

0 个答案:

没有答案