我无法使kafka连接接收器对不在公共架构中的表起作用。
我使用kafka connect通过使用jdbcsinkconnector的sink操作将记录发送到红移数据库。
我已经用红移创建了目标表,但它不在 public
架构( my_schema.test_table
. 注: auto.create
& auto.evolve
在连接器配置中处于关闭状态)
当我试图在连接器配置中指定表的位置时,就像这样。。。 "table.name.format": "my_schema.test_table",
…接收器连接器的任务在尝试运行时遇到此错误:
“表my\u schema.test\u表丢失,自动创建被禁用”
从 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:amazon无效操作:关系“test\u table”不存在;”
可能是因为 test_table
不在公共架构中:(
代码似乎试图正确解析这个表名,但不幸的是它没有记录结果。
这是我的连接字符串: "connection.url": "jdbc:redshift://...:5439/dev"
我一直在胡思乱想 currentSchema=my_schema
在连接字符串中。。。都是为了 redshift
jdbc驱动程序以及 postgresql
. 运气不好。
我用的是Kafka连接1.1.0版
红移jdbc jar: RedshiftJDBC42-1.2.16.1027.jar
通过将表放入 public
架构并指定没有架构的表名: "table.name.format": "test_table"
. 不幸的是,这不是我们需要数据的地方。
非常感谢您的帮助。
1条答案
按热度按时间yjghlzjz1#
我注意到源代码似乎在尝试做正确的事情……然后意识到我们使用的jdbc接收器连接器的版本没有这些修改,这些修改是最近才有的。我从jdbc接收器连接器jar的4.1.0版迁移到5.0.0版,瞧,数据正在流入我指定的模式中的一个表中?