【发布时间】:2018-09-21 15:15:59
【问题描述】:
我有一个非常典型的场景,我需要在时间 t1 来自一个主题的 KStream 与来自另一个主题的 KTable 之间执行交叉连接。为了解释这一点,我想出了一个图表。请参考图片。我想了解 Kafka Streams 是否可以做到这一点。我非常清楚交叉连接是可能的。但是,我想知道是否可以在不同的时间范围内加入。
【问题讨论】:
标签: join apache-kafka apache-kafka-streams
我有一个非常典型的场景,我需要在时间 t1 来自一个主题的 KStream 与来自另一个主题的 KTable 之间执行交叉连接。为了解释这一点,我想出了一个图表。请参考图片。我想了解 Kafka Streams 是否可以做到这一点。我非常清楚交叉连接是可能的。但是,我想知道是否可以在不同的时间范围内加入。
【问题讨论】:
标签: join apache-kafka apache-kafka-streams
不确定我是否正确理解了这个问题,但您可以通过提供自定义时间戳提取器来“转移”时间:
builder.table("topciName", Consumed.with(new MyTimestampExtractor()));
class MyTimestampExtractor implements TimestampExtractor { ... }
【讨论】:
Transformer)。请注意,流表连接不是对称的,即它只为流输入生成结果(表输入只更新表)。因此,您需要使用 KStream-KStream 或 KTable-KTable 连接。这可能会有所帮助:confluent.io/blog/crossing-streams-joins-apache-kafka