我正在努力让Confluent的kafka连接器连接到DB2。
我正在 docker 中运行一个 ubuntu 实例来测试普鲁波斯。该解决方案需要部署到 kubernetes,所以 docker 就是这样。
我已经使用 apt-get 安装了 Confluent 平台并添加了他们的存储库。所有服务都在运行,kafka,zookeeper,schema和kafka rest。
我已经创建了我的 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
我收到此错误:no main manifest attribute, in /usr/share/java/kafka-connect-jdbc/db2jcc.jar
我还是继续了,但当然我得到了一个错误:No suitable driver found for 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: Class com.ibm.db2.jcc.DB2Jcc does not implement Connector
任何帮助或建议将不胜感激。
我是你提到的教程的作者,我刚刚注意到这个线程,我看到你正在使用IBM提供的DB2驱动程序(db2cc.jar
(和DataDirect IBM DB2连接字符串(jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
(,这就是为什么一旦您将连接字符串更改为IBM提供的驱动程序,您就可以正确连接。