【问题标题】:Initial load of Kafka stream data with windowed join带有窗口连接的 Kafka 流数据的初始加载
【发布时间】:2020-03-23 06:14:58
【问题描述】:

我在两个流之间使用窗口连接,比如说一个 7 天的窗口。

在初始加载时,数据库中的所有记录(通过 kafka 连接源连接器)都被加载到流中。看起来,前 7 天的所有记录最终都在窗口状态存储中,因为生产者/摄取的时间戳都在当前时间,而字段(如 create_time)可能在消息值中。

是否有推荐的方法来平衡初始负载与加入的 Windows?

【问题讨论】:

  • 您在窗口中使用了哪个 TimestampExtractor?
  • 目前,默认一个。我考虑过替换它并替换 create_time 值,但后来我想它会在时间窗口之外并且永远不会发生连接
  • 您是否建议如果我有记录 A 并以 1 年前的日期加入记录 A,并且记录 B 以上周的日期加入 B...如果我使用自定义时间戳提取器,有一个假装一个月的窗口... A 和 A' 将匹配 b/c 他们的时间戳日期在一个月内,B 和 B' 也将匹配 b/c 他们的日期在一个月内?
  • 我只是说如果你真的想要一个实际月份而不是所有数据,你需要调整那个设置

标签: apache-kafka apache-kafka-streams apache-kafka-connect


【解决方案1】:

好吧,问题是您想将哪些记录相互连接?以及源连接器设置为记录时间戳的时间戳(也可能取决于主题配置,[log.]message.timestamp.type

根据TimestampExtractor 返回的任何内容执行连接。默认情况下,这是记录时间戳。如果您想基于其他时间戳进行连接,则可以使用自定义时间戳提取器。

如果您想获得处理时间语义,您可能需要使用WallclockTimestampExtractor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 2020-03-16
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2017-01-08
    相关资源
    最近更新 更多