我无法使 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_tabledev.my_schema.test_tabletest_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在连接字符串中指定......既适用于redshiftjdbc 驱动程序,也适用于postgresql. 没运气。
我正在使用 Kafka Connect 1.1.0 版
红移 JDBC JAR:RedshiftJDBC42-1.2.16.1027.jar
我可以通过将表放入public架构中并指定没有架构的表名来获得数据流动:"table.name.format": "test_table"。不幸的是,这不是我们需要数据的地方。
非常感谢任何帮助。