我们能否使用kafka JDBC源连接器从多个数据库中提取数据并将其放入一个输入主题?

问题描述 投票:0回答:1

我们有一个用例,在这个用例中,业务逻辑要求我们从不同的数据库中连接表,并将最终结果推送到一个输入主题中。

table1 from schema1 in database1

table2 from schema2 in database2

业务逻辑

SELECT a,b FROM table1 INNER JOIN table2 ON table1.c = table2.d;

此处 a 是来自 table1b 是来自 table2,输入主题中的信息值看起来像是 { "payload":{ "a":xyz,"b":xyz} }

有没有办法用一个jdbc源连接器来实现这个要求?

PS:

  • 我已经提到了 JDBC Kafka Connector可以从多个数据库拉取数据吗?我想请问一下,在接受的答案中,消息被推送到输入主题,而没有实现任何业务逻辑。通过这种实现,我们将无法按照我们的要求将消息推送到输入主题。
  • 另一种方法是使用kafka流,即从每个表推送消息到输入主题,并在kafka流应用层处理加入逻辑。但是,我们正在寻找一种解决方案,如果我们能在连接器级别本身实现逻辑?
apache-kafka apache-kafka-connect
1个回答
1
投票

简短的回答。不,你不能以这种方式使用JDBC Source连接器。

较长的答案:不,你不能以这种方式使用JDBC源连接器。JDBC源连接器可以连接到每个连接器实例中的一个数据库。你有几个选择。

  1. 将两张表的内容流到Kafka中,然后使用ksqlDB(或Kafka Streams,如果你喜欢)将它们连接起来,并将产生的数据推送到一个新的Kafka主题。
  2. 自己写一个新的连接器插件,连接到两个数据库并进行连接(这听起来是个糟糕的主意)。
  3. 如果数据库支持它,请使用远程连接(例如Oracle的DB Link)和JDBC源连接器的 query 选项。

根据数据量和查询的复杂度,我个人会选择方案1,ksqlDB在这里是一个完美的选择。

© www.soinside.com 2019 - 2024. All rights reserved.