kafka 流如何计算水印?
How does kafka streams compute watermarks?
Kafka Streams 是否在内部计算水印?是否可以在 window 完成时(即当水印通过 window 的末尾时)(仅)观察结果?
Kafka Streams 内部不使用水印,但 2.1.0 中的一项新功能可让您在关闭时观察 window 的结果。它叫做 Suppressed
,您可以在文档中阅读它:Window Final Results:
KGroupedStream<UserId, Event> grouped = ...;
grouped
.windowedBy(TimeWindows.of(Duration.ofHours(1)).grace(ofMinutes(10)))
.count()
.suppress(Suppressed.untilWindowCloses(unbounded()))
Does Kafka Streams internally compute watermarks?
没有。 Kafka Streams 遵循不需要水印的持续更新处理模型。您可以在线找到有关此内容的更多详细信息:
- https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/
- https://www.confluent.io/resources/streams-tables-two-sides-same-coin
Is it possible to observe the result of a window (only) when it completes (i.e. when watermark passes end of window)?
您可以随时观察 window 的结果。通过例如 KTable#toStream()#foreach()
(即基于推送的方法)订阅结果变更日志流,或者通过 Interactive Queries 让您主动查询结果 window(即基于拉取的方法)方法)。
如@Dmitry 所述,对于基于推送的方法,如果您只对 window 的最终结果感兴趣,也可以使用 suppress()
运算符。
Kafka Streams 是否在内部计算水印?是否可以在 window 完成时(即当水印通过 window 的末尾时)(仅)观察结果?
Kafka Streams 内部不使用水印,但 2.1.0 中的一项新功能可让您在关闭时观察 window 的结果。它叫做 Suppressed
,您可以在文档中阅读它:Window Final Results:
KGroupedStream<UserId, Event> grouped = ...;
grouped
.windowedBy(TimeWindows.of(Duration.ofHours(1)).grace(ofMinutes(10)))
.count()
.suppress(Suppressed.untilWindowCloses(unbounded()))
Does Kafka Streams internally compute watermarks?
没有。 Kafka Streams 遵循不需要水印的持续更新处理模型。您可以在线找到有关此内容的更多详细信息:
- https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/
- https://www.confluent.io/resources/streams-tables-two-sides-same-coin
Is it possible to observe the result of a window (only) when it completes (i.e. when watermark passes end of window)?
您可以随时观察 window 的结果。通过例如 KTable#toStream()#foreach()
(即基于推送的方法)订阅结果变更日志流,或者通过 Interactive Queries 让您主动查询结果 window(即基于拉取的方法)方法)。
如@Dmitry 所述,对于基于推送的方法,如果您只对 window 的最终结果感兴趣,也可以使用 suppress()
运算符。