gpt4 book ai didi

apache-kafka - 使用 Kafka Streams DSL 的两个 Kafka 主题的事件时间合并

转载 作者:行者123 更新时间:2023-12-04 12:42:01 25 4
gpt4 key购买 nike

我正在寻找一种根据事件时间合并两个 Kafka 主题的方法。

例如,我有两个主题具有以下架构 {event-key}:: {event-time-as-value}

topic I -  { {1 :: 12:00pm} {2 :: 12:10pm} {3 :: 14:50pm} {4 :: 15:00pm} }
topic II - { {1 :: 13:00pm} {2 :: 13:10pm} {3 :: 15:50pm} {4 :: 16:00pm} }

预期输出应如下所示:
{ {1 :: 12:00pm} {2 :: 12:10pm} {1 :: 13:00pm} {2 :: 13:10pm} {3 :: 14:50pm} {4 :: 15:00pm} {3 :: 15:50pm} {4 :: 16:00pm} }

有没有办法使用 Kafka Streams DSL 来做到这一点?

备注 : 很有可能原始主题不是按事件时间排序的,没关系。我希望算法始终选择当前位于每个主题开头的两个事件中最早的事件(与 merge two sorted arrays 算法的工作方式相同)

最佳答案

Kafka Streams(从 2.1.0 版开始)实现了您描述的确切算法。因此,一个简单的:

StreamsBuilder builder = new StreamsBuilder();
builder
.stream(Arrays.asList("firstInputTopic", "secondInputTopic"))
.to("outputTopidName");

应该做你想做的。请注意,该程序将基于每个分区合并数据。

还要考虑配置 max.task.idle.ms .

更多详情请阅读相应的 KIP: https://cwiki.apache.org/confluence/display/KAFKA/KIP-353%3A+Improve+Kafka+Streams+Timestamp+Synchronization

此外,您需要实现和配置自定义 TimestampExtractor从值中获取时间戳。

关于apache-kafka - 使用 Kafka Streams DSL 的两个 Kafka 主题的事件时间合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57787707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com