当每个主题

时间:2017-08-31 13:16:24

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

我正在制定一项要求,即将数据从SQL数据存储中提取到Kafka Broker,其中包含4个不同的主题,对应于SQL数据存储中的4个不同的表。我正在使用Kafka Connect将数据提取到主题中。

我现在想要加入这些主题的数据并汇总它们并将它们写回另一个主题。这个主题将由消费者订阅,以填充将用于呈现UI的NOSQL数据存储。

我知道Kafka Streams可以用来加入主题。

我的查询是,从SQL数据存储表中提取的数据可能并不总是包含所有4个表的数据。只有2个表会定期更新。一个将更新,但不会与另一个频率相同。剩下的一个是静态的(一种主表)。

所以,我不确定当记录数量与主题不匹配时,我们如何才能真正加入Kafka Streams。

有没有人遇到过类似的问题。如果是这样,请您提供相同的想法/代码片段。

1 个答案:

答案 0 :(得分:0)

行数根本不重要......为什么它会对连接结果产生任何影响?

您可以将所有4个主题分别读作KTable,然后进行加入。最后,将聚合应用于join-result KTable并将最终结果写入主题。像这样:

KTable t1 = builder.table("topic1");
KTable t2 = builder.table("topic2");
KTable t3 = builder.table("topic3");
KTable t4 = builder.table("topic4");

KTable joinResult = t1.join(t2, ...).join(t3, ...).join(t4, ...);

joinResult.groupByKey(...).aggregate(...).to("result-topic);