kafka流抑制会话窗口聚合

dddzy1tm  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(360)

我在kafka流应用程序中编写了以下代码:

KGroupedStream<String, foo> groupedStream = stream.groupByKey();
groupedStream.windowedBy(
SessionWindows.with(Duration.ofSeconds(3)).grace(Duration.ofSeconds(3)))
    .aggregate(() -> {...})
    .suppress(Suppressed.untilWindowCloses(unbounded()))
    .toStream()...

它应该(如果我理解正确的话)在窗口关闭后为每个键发出记录。不知何故,行为如下:
流不发出第一条记录,只在第二条记录之后转发它,即使使用不同的键,然后第二条记录只在第三条记录之后发出,以此类推。。
我尝试过多个streamconfigs,使用“exactly\u once”,并且无论是否使用缓存,这种行为仍然存在。
提前感谢您的帮助!

jgwigjjp

jgwigjjp1#

我不认为带有suppress()的sessionwindow会产生任何输出。
有错就纠正我。据我所知,suppress()只适用于基于时间的窗口,而不适用于基于会话的窗口。

xe55xuns

xe55xuns2#

这是预期的行为。请注意 suppress() 基于事件时间。因此,只要没有新的数据到达,时间就无法前进,因此较早地逐出记录是错误的,因为无法保证下一个记录可能属于当前窗口。

相关问题