Kafka流内部计算水印吗?是否可以在窗口完成时(仅当水印经过窗口末尾时)观察窗口的结果?
fwzugrvs1#
kafka streams在内部不使用水印,但2.1.0中的一个新功能允许您在窗口关闭时观察其结果。它叫 Suppressed ,您可以在docs:窗口final results:
Suppressed
KGroupedStream<UserId, Event> grouped = ...; grouped .windowedBy(TimeWindows.of(Duration.ofHours(1)).grace(ofMinutes(10))) .count() .suppress(Suppressed.untilWindowCloses(unbounded()))
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() 运算符,如果您只对窗口的最终结果感兴趣。
KTable#toStream()#foreach()
suppress()
2条答案
按热度按时间fwzugrvs1#
kafka streams在内部不使用水印,但2.1.0中的一个新功能允许您在窗口关闭时观察其结果。它叫
Suppressed
,您可以在docs:窗口final results: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()
运算符,如果您只对窗口的最终结果感兴趣。