如何使用Kafka Connect JDBC通过多个模式包含包含相同名称的表的PostgreSQL来获取PostgreSQL?

时间:2019-04-18 17:03:16

标签: postgresql jdbc apache-kafka apache-kafka-connect confluent

我需要从具有约2000个架构的PostgreSQL数据库中获取数据。所有模式都包含相同的表(这是一个多租户应用程序)。

连接器的配置如下:

{
  "name": "postgres-source",
  "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
  "timestamp.column.name": "updated",
  "incrementing.column.name": "id",
  "connection.password": "********",
  "tasks.max": "1",
  "mode": "timestamp+incrementing",
  "topic.prefix": "postgres-source-",
  "connection.user": "*********",
  "poll.interval.ms": "3600000",
  "numeric.mapping": "best_fit",
  "connection.url": "jdbc:postgresql://*******:5432/*******",
  "table.whitelist": "table1",
  "value.converter": "org.apache.kafka.connect.json.JsonConverter",
  "value.converter.schemas.enable": "false",
  "key.converter": "org.apache.kafka.connect.json.JsonConverter",
  "key.converter.schemas.enable":"false"
}

使用此配置,我会收到此错误:

“连接器将不合格的表名用作主题名称,并且检测到重复的不合格的表名。这可能导致主题中的数据类型混合以及下游处理错误。为了防止此类处理错误,JDBC Source连接器无法执行当它检测到重复的表名配置时开始”

显然,连接器不想将多个具有相同名称的表中的数据发布到单个主题。

这对我来说无关紧要,它可以转到单个主题或多个主题(每个模式一个)。

作为补充信息,如果我添加:

"schema.pattern": "schema1" 

将其连接到配置,连接器将起作用,并复制指定架构和表中的数据。

有没有办法复制包含表名相同的多个模式?

谢谢

0 个答案:

没有答案