kafka连接接收器到不在公共架构中的红移表

gudnpqoy  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(437)

我无法使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" . 不幸的是,这不是我们需要数据的地方。
非常感谢您的帮助。

yjghlzjz

yjghlzjz1#

我注意到源代码似乎在尝试做正确的事情……然后意识到我们使用的jdbc接收器连接器的版本没有这些修改,这些修改是最近才有的。我从jdbc接收器连接器jar的4.1.0版迁移到5.0.0版,瞧,数据正在流入我指定的模式中的一个表中?

相关问题