我正在努力让 Confluence 的 kafka 连接器连接到 DB2。
我正在 docker 中运行一个 ubuntu 实例来测试目的。解决方案需要部署到kubernetes上,所以就是docker。
我已经使用 apt-get 安装了 Confluence 平台并添加了它们的存储库。所有服务都在运行,kafka、zookeeper、schema 和 kafka 休息。
我已经按照本文所述创建了我的 kafka 连接属性文件:https://www.progress.com/blogs/build-an-etl-pipeline-with-kafka-connect-via-jdbc-connectors
我认为这对于 DB2 来说也是一样的。我在上面的教程中缺少的步骤是:
java -jar PROGRESS_DATADIRECT_JDBC_POSTGRESQL_ALL.jar
我尝试像这样运行它:
java -jar/usr/share/java/kafka-connect-jdbc/db2jcc.jar
我收到此错误:
没有主要 list 属性,位于/usr/share/java/kafka-connect-jdbc/db2jcc.jar
无论如何我都继续了,但是我当然得到了一个错误:
没有找到合适的驱动程序 jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
这是我启动连接器的命令:
/usr/bin/connect-standalone/etc/kafka/connect-standalone.properties/etc/kafka-connect-jdbc/db2.properties
这是我的属性文件:
name=test-db2-jdbc
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
mode=timestamp+incrementing
incrementing.column.name=id
timestamp.column.name=modified_time
topic.prefix=test_jdbc_
table.whitelist=data_log
我确信我已经很接近了。我只需要让 DB2 驱动程序在 java 中注册,或者让 kafka connect 获取它并能够使用它。
我尝试了 connector.class
的其他值,但如果我将其更改为类的名称,就像在其他 Java 应用程序中一样,我会收到此错误:
java.util.concurrent.ExecutionException:org.apache.kafka.connect.errors.ConnectException:类 com.ibm.db2.jcc.DB2Jcc 未实现连接器
任何帮助或建议将不胜感激。
最佳答案
我是您提到的教程的作者,我刚刚注意到这个线程,我发现您正在使用 IBM 提供的 DB2 驱动程序(db2cc.jar
) 和 DataDirect IBM DB2 连接字符串(jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
),这就是为什么一旦您将连接字符串更改为 IBM 提供的驱动程序,您能够正常连接。
关于JDBC Kafka 连接 DB2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50967466/