1

我使用“confluentinc/kafka-connect-jdbc:10.2.6”作为我的 JDBC 连接器将 Kafka 主题传输到我的 questDB 中。

当我提供明确的主题名称时,它按预期工作。但是,当我使用基于正则表达式的主题名称时,它不起作用,我的 questDB 数据库中没有创建表。

我的 JDBC 设置中缺少什么?

谢谢!

显式版本(工作):

{
  "name": "jdbc_sink_ftx",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "topics": "trades-FTX-ETH-USD-PERP, trades-FTX-FTM-USD-PERP",
    "table.name.format": "${topic}",
    "connection.url": "jdbc:postgresql://questdb:8812/qdb?useSSL=false",
    "connection.user": "admin",
    "connection.password": "quest",
    "auto.create": "true",
    "insert.mode": "insert",
    "dialect.name": "PostgreSqlDatabaseDialect"
  }
}

正则表达式版本(不工作):

{
  "name": "jdbc_sink_ftx_regex",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "topics.regex": "FTX",
    "table.name.format": "${topic}",
    "connection.url": "jdbc:postgresql://questdb:8812/qdb?useSSL=false",
    "connection.user": "admin",
    "connection.password": "quest",
    "auto.create": "true",
    "insert.mode": "insert",
    "dialect.name": "PostgreSqlDatabaseDialect"
  }
}
4

2 回答 2

0

正则表达式需要与完整的主题名称匹配,如下所示:

"topics.regex": "trades-FTX-.*"
于 2022-01-18T17:19:53.317 回答
0

最好检查 QuestDB 日志。在这种情况下, Grepping for' E '应该显示通常包括描述和操作系统错误代码的错误。Kafka 连接器中的主题名称用作表名称。QuestDB 使用表名作为磁盘上的目录并出于安全目的对其进行验证。'.'、'/' 和 '' 不允许在表名中使用字符。特定的操作系统也可以对文件名应用额外的限制。

不过最好检查 QuestDB 日志。

于 2022-01-12T17:14:51.927 回答