汇合的 jdbc-source-connector 不能在 Java 中工作
Posted
技术标签:
【中文标题】汇合的 jdbc-source-connector 不能在 Java 中工作【英文标题】:confluent jdbc-source-connector not working from Java 【发布时间】:2020-11-02 02:34:00 【问题描述】:当我从命令行运行它时,我有一个 jdbc-source-connector 工作,如下所示
bin/connect-standalone.sh \
config/connect-standalone.properties \
config/connect_mysql-jdbc-source.properties
但是当我将文件内容解析为 Java 应用程序中的映射并创建
io.confluent.connect.jdbc.JdbcSourceConnector
以地图为参数我得到
java.sql.SQLException:
用户''@'localhost'
的访问被拒绝(使用 密码:NO
)
下面是我的连接器的内容,正如我所说,它在从命令行调用时工作并创建所有 3 个主题
name=test-mysql-jdbc
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:mysql://127.0.0.1:3306/loaderDB
connection.user=root
connection.password=MyPassword
table.whitelist=loader_jobs, education_event, school_unit
tables="loader_jobs, education_event, school_unit"
mode=bulk
topic.prefix=test_mysql_jdbc_
numeric.mapping=best_fit
poll.interval.ms=86400000
batch.max.rows=10000
在调试应用程序时,我可以清楚地看到所有属性都已读取,当它到达分配连接 url 以获取数据库连接的部分时,它会抛出上面的 SQL 异常。
该类中没有提及数据库用户和密码,所以我尝试将配置文件中的connection.url
更改为
connection.url=jdbc:mysql://127.0.0.1:3306/loaderDB?user=root&password=MyPassword
但我还是遇到了同样的异常
【问题讨论】:
看起来不像是连接问题。您必须允许数据库访问.... 用户名和密码无处可寻?我清楚地看到了两个使用它的连接属性 First OneCricketeer,我不确定你是否将整个帖子都变红了。正如我在帖子中提到的,我从命令行使用相同的连接器文件没有任何问题。那么我应该在哪里允许分贝访问?您看到的属性是连接器文件中的属性,我说的是当我调试应用程序并进入 confluents JdbcSourceConnector 类时,我没有看到 DB 用户和密码的任何属性,它只有一个 URL 属性。 文件中的每一行都被传递到代码中的Properties
对象中。所以我不明白你想在这里做什么。 Connect 旨在通过 CLI 运行,而不是嵌入到另一个进程中
【参考方案1】:
我通过升级我的 pom 依赖项解决了这个问题
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-jdbc</artifactId>
<version>5.0.0</version>
我之前使用的是 2.0.1 版本。
【讨论】:
以上是关于汇合的 jdbc-source-connector 不能在 Java 中工作的主要内容,如果未能解决你的问题,请参考以下文章
汇合:Hdfs 沉入 avro 格式,但在 hive 中读取 avro 文件时,我的时间比“时区”提前 5:30 小时:“亚洲/加尔各答”