【问题标题】:kafka Streams session windowskafka Streams会话窗口
【发布时间】:2018-02-28 07:37:17
【问题描述】:

您好,我正在使用非活动时间 5 分钟的 kafka 会话窗口。当达到非活动时间并且会话因密钥而下降时,我想要某种反馈。 假设我有

(A,1)

记录其中 'A' 是键。现在,如果我在 5 分钟内没有得到任何 'A' 关键记录,则会话将被丢弃。

我想在会话结束时做一些操作,比如说那个会话的 (value)*2。有什么方法可以使用 Kafka Stream API 实现这一点

【问题讨论】:

    标签: apache-kafka avro apache-kafka-streams


    【解决方案1】:

    在间隔时间过去后,Kafka Streams 不会丢弃会话。相反,如果具有相同键的另一条记录在间隔时间过去后到达,则 if 将创建一个新会话,并并行维护两个会话。这允许处理乱序数据。如果乱序数据落入间隙并“连接”两个会话,甚至可能会合并两个会话。

    会话默认保持 1 天。您可以通过SessionWindows#until() 方法更改此设置。如果会话过期,它将被静默丢弃。没有通知。您还需要考虑配置参数window.store.change.log.additional.retention.ms

    默认保留设置为 Windows#maintainMs() + 1 天。您可以通过在 StreamsConfig 中指定 StreamsConfig.WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG 来覆盖此设置。

    因此,如果时间过去了,您想要做出反应,您应该研究允许您基于“均匀时间进度”或挂钟时间注册定期回调(某种计时器)的标点符号。如果会话在一段时间内未更新并且您认为它已“完成”,这可以让您做出反应。

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多