apache-kafka-connect - Kafka 连接 CockroachDB

标签 apache-kafka-connect cockroachdb

我正在尝试使用 CockroachDB (v2.0.6) 作为我的 Kafka 主题之一的接收器。

我找不到专门用于 CockroachDB 的 Kafka 连接器,因此我决定使用 Confluence 的 jdbc 接收器连接器,因为 CockroachDB 支持 postgreSQL 语法。

我在 Kafka Connect 上使用的连接字符串如下

"connection.url": "jdbc:postgresql://roach1:26257/mydb?sslmode=disable"

这基本上是我对现有工作 Postgres 接收器连接器所做的唯一更改。

不幸的是,我无法使其工作,因为连接器因以下原因而失败 错误

Caused by: org.apache.kafka.connect.errors.ConnectException: java.sql.SQLException: org.postgresql.util.PSQLException: ERROR: syntax error at or near "."
  Detail: source SQL:
SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM,   ct.relname AS TABLE_NAME, a.attname AS COLUMN_NAME,   (i.keys).n AS KEY_SEQ, ci.relname AS PK_NAME FROM pg_catalog.pg_class ct   JOIN pg_catalog.pg_attribute a ON (ct.oid = a.attrelid)   JOIN pg_catalog.pg_namespace n ON (ct.relnamespace = n.oid)   JOIN (SELECT i.indexrelid, i.indrelid, i.indisprimary,              information_schema._pg_expandarray(i.indkey) AS keys         FROM pg_catalog.pg_index i) i     ON (a.attnum = (i.keys).x AND a.attrelid = i.indrelid)   JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) WHERE true  AND ct.relname = 'my_topic' AND i.indisprimary  ORDER BY table_name, pk_name, key_seq
    at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:88)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:564)
    ... 10 more
Caused by: java.sql.SQLException: org.postgresql.util.PSQLException: ERROR: syntax error at or near "."
  Detail: source SQL:
SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM,   ct.relname AS TABLE_NAME, a.attname AS COLUMN_NAME,   (i.keys).n AS KEY_SEQ, ci.relname AS PK_NAME FROM pg_catalog.pg_class ct   JOIN pg_catalog.pg_attribute a ON (ct.oid = a.attrelid)   JOIN pg_catalog.pg_namespace n ON (ct.relnamespace = n.oid)   JOIN (SELECT i.indexrelid, i.indrelid, i.indisprimary,              information_schema._pg_expandarray(i.indkey) AS keys         FROM pg_catalog.pg_index i) i     ON (a.attnum = (i.keys).x AND a.attrelid = i.indrelid)   JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) WHERE true  AND ct.relname = 'collect_flow_tracking' AND i.indisprimary  ORDER BY table_name, pk_name, key_seq 

所以我的问题是,有人成功使用 Kafka Connect 和 CockroachDB 吗? 还有人对这个错误(导致它的原因)以及如何规避它并使其工作有任何指示吗?

最佳答案

这里是 CockroachDB PM。看起来问题是 Kafka Connect Postgres 连接器执行的数据库内省(introspection)查询不受支持。好消息是 CockroachDB 2.1 似乎确实支持这个特定的查询。您可以使用 the latest CockroachDB beta 重试吗? ?

关于apache-kafka-connect - Kafka 连接 CockroachDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606096/

相关文章:

hibernate - 如何使用 JpaRepository 进行批量(多行)插入?

go - 事务后返回由 CockroachDB 创建的行 ID

bash - CockroachDB Docker 使用 SQL 命令编写脚本

azure - Azure SQL 数据库是分布式 SQL 数据库吗?

mysql - Kafka生产者与Kafka连接读取MySQL数据源

apache-kafka - Kafka 连接 : could not get type for name org. Windows 上的 osgi.framework.BundleListener

amazon-s3 - 如何从 s3 接收器连接器中的信封类型架构中提取嵌套字段

kubernetes - 将本地 CockroachDB 节点添加到 Kubernetes 中托管的集群

postgresql - Kafka Connect 使用数组字段对 postgres 记录进行扁平化转换

mongodb - 使用 elasticsearch sink 连接器删除和编辑操作不起作用