kafka streams如何计算水印?

hfyxw5xn  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(304)

Kafka流内部计算水印吗?是否可以在窗口完成时(仅当水印经过窗口末尾时)观察窗口的结果?

fwzugrvs

fwzugrvs1#

kafka streams在内部不使用水印,但2.1.0中的一个新功能允许您在窗口关闭时观察其结果。它叫 Suppressed ,您可以在docs:窗口final results:

KGroupedStream<UserId, Event> grouped = ...;
grouped
    .windowedBy(TimeWindows.of(Duration.ofHours(1)).grace(ofMinutes(10)))
    .count()
    .suppress(Suppressed.untilWindowCloses(unbounded()))
5jdjgkvh

5jdjgkvh2#

Kafka流内部计算水印吗?
不需要。kafka流遵循不需要水印的连续更新处理模型。您可以在网上找到有关此的更多详细信息:
https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/
https://www.confluent.io/resources/streams-tables-two-sides-same-coin
是否可以在窗口完成时(仅当水印经过窗口末尾时)观察窗口的结果?
您可以在任何时间点观察窗口的结果。例如,通过订阅结果changelog流 KTable#toStream()#foreach() (即,基于推的方法),或通过交互式查询,让您主动查询结果窗口(即,基于拉的方法)。
正如@dmitry所提到的,对于基于push的方法,您还可以使用 suppress() 运算符,如果您只对窗口的最终结果感兴趣。

相关问题