我无法使 Kafka Connect 接收器为不在公共模式中的表工作。
我正在使用 Kafka Connect 通过使用 JdbcSinkConnector 的接收器操作将记录发送到 Redshift 数据库。
我已经在 Redshift 中创建了我的目标表,但它不在public
架构中。( my_schema.test_table
. 注意:auto.create
&auto.evolve
在连接器配置中是关闭的)
当我尝试在连接器配置中指定表的位置时,就像这样......
"table.name.format": "my_schema.test_table",
...接收器连接器的任务在尝试自行运行时遇到此错误:
“表 my_schema.test_table 丢失并且自动创建被禁用”
从
Caused by: org.apache.kafka.connect.errors.ConnectException: Table my_schema.test_table is missing and auto-creation is disabled
at io.confluent.connect.jdbc.sink.DbStructure.create(DbStructure.java:86)
at io.confluent.connect.jdbc.sink.DbStructure.createOrAmendIfNecessary(DbStructure.java:63)
at io.confluent.connect.jdbc.sink.BufferedRecords.add(BufferedRecords.java:78)
...
我尝试了以下格式来提供表名:
my_schema.test_table
dev.my_schema.test_table
test_table
<-- 在这种情况下,我通过了阻止其他人的存在检查,但每次 Kafka Connect 尝试写入一行时都会遇到此错误:- “org.apache.kafka.connect.errors.RetriableException:java.sql.SQLException:java.sql.SQLException:亚马逊无效操作:关系“test_table”不存在;”
- 可能是因为
test_table
不在公共模式中。: (
看起来代码正在尝试正确解析这个表名,但不幸的是它没有记录它的结果。
这是我的连接字符串:"connection.url": "jdbc:redshift://xxx.xxx.xxx.xxx:5439/dev"
我一直在尝试currentSchema=my_schema
在连接字符串中指定......既适用于redshift
jdbc 驱动程序,也适用于postgresql
. 没运气。
我正在使用 Kafka Connect 1.1.0 版
红移 JDBC JAR:RedshiftJDBC42-1.2.16.1027.jar
我可以通过将表放入public
架构中并指定没有架构的表名来获得数据流动:"table.name.format": "test_table"
。不幸的是,这不是我们需要数据的地方。
非常感谢任何帮助。