Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jdbc 使用kafka connect从多个主题向上插入多个表_Jdbc_Apache Kafka_Apache Kafka Connect_Confluent Platform - Fatal编程技术网

Jdbc 使用kafka connect从多个主题向上插入多个表

Jdbc 使用kafka connect从多个主题向上插入多个表,jdbc,apache-kafka,apache-kafka-connect,confluent-platform,Jdbc,Apache Kafka,Apache Kafka Connect,Confluent Platform,我试图使用JDBCSinkConnector阅读2个kafka主题,并将其插入到我手动创建的2个Oracle表中。每个表都有一个主键,我想在upsert模式下使用它。如果我只在pk.fields中使用一个主题和一个字段,连接器工作正常,但是如果我在pk.fields中输入多个列,则它无法识别模式。我遗漏了什么吗?请建议 name=oracle_sink_prod connector.class=io.confluent.connect.jdbc.JdbcSinkConnector tasks.m

我试图使用JDBCSinkConnector阅读2个kafka主题,并将其插入到我手动创建的2个Oracle表中。每个表都有一个主键,我想在upsert模式下使用它。如果我只在
pk.fields
中使用一个主题和一个字段,连接器工作正常,但是如果我在
pk.fields
中输入多个列,则它无法识别模式。我遗漏了什么吗?请建议

name=oracle_sink_prod
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
tasks.max=1
topics=KAFKA1011,JAFKA1011
connection.url=URL
connection.user=UID
connection.password=PASSWD
auto.create=false
table.name.format=KAFKA1011,JAFKA1011
pk.mode=record_value
pk.fields= ID,COMPANY 
auto.evolve=true
insert.mode=upsert

//ID is pk of kafka1011 table and COMPANY is of other

如果主键不同,只需创建两个不同的接收器连接器。它们都可以在同一个Kafka Connect工作程序上运行


您还可以选择使用卡夫卡消息本身的键。有关更多信息,请参阅。这是一个更具可伸缩性的选项,然后您只需要确保您的消息被正确地键入,以便向下流到JDBC接收器

非常感谢Robin,但在未来,主题的数量将继续增加,可能会达到100个,要管理100个连接器,这是一个好的选择吗?。此外,我们还计划使用kafka connect实现数据管道的实时性,因为我们的数据源将是多个oracle数据库,而sink将是一个oracle数据仓库,管理这么多连接器会不会很困难?我已经更新了我的答案-您也可以使用
记录键
选项,并确保您的卡夫卡信息已相应键入。您使用什么选项从oracle中提取数据?像GoldenGate这样的工具允许您指定键,您也可以在Connect本身中使用它来定义键