【问题标题】:Kafka Stream and Table joins at different time intervalsKafka Stream 和 Table 以不同的时间间隔连接
【发布时间】:2018-09-21 15:15:59
【问题描述】:

我有一个非常典型的场景,我需要在时间 t1 来自一个主题的 KStream 与来自另一个主题的 KTable 之间执行交叉连接。为了解释这一点,我想出了一个图表。请参考图片。我想了解 Kafka Streams 是否可以做到这一点。我非常清楚交叉连接是可能的。但是,我想知道是否可以在不同的时间范围内加入。

【问题讨论】:

    标签: join apache-kafka apache-kafka-streams


    【解决方案1】:

    不确定我是否正确理解了这个问题,但您可以通过提供自定义时间戳提取器来“转移”时间:

    builder.table("topciName", Consumed.with(new MyTimestampExtractor()));
    
    class MyTimestampExtractor implements TimestampExtractor { ... }
    

    【讨论】:

    • 嗨 Mathias,场景是数据可以在不同时间到达所有主题。但是,每当一个主题有新消息时,消费者应该能够将传入消息与其他两个主题的数据集连接起来,例如流数据如何与静态表连接。这是否可以通过单个消费者使用 Kstream 和 KTable 监听所有 3 个主题来实现?
    • 使用 Kafka Streams,您可以通过多个级联连接来连接多个主题,每个主题有 2 个。没有开箱即用的 3 路连接运算符(尽管您可以将自定义 3 路连接构建为 Transformer)。请注意,流表连接不是对称的,即它只为流输入生成结果(表输入只更新表)。因此,您需要使用 KStream-KStream 或 KTable-KTable 连接。这可能会有所帮助:confluent.io/blog/crossing-streams-joins-apache-kafka
    猜你喜欢
    • 1970-01-01
    • 2022-12-24
    • 2023-02-23
    • 1970-01-01
    • 2010-12-25
    • 2017-08-14
    • 2021-02-10
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多