Kafka JDBC Sink 处理数组数据类型

问题描述

我知道 Kafka JDBC Sink Connector 对数组数据类型有一些缺点。但是,是否可以将 Sink 连接器与支持数组数据类型的简单 Kafka 连接器结合使用。如何从 Kafka 配置中过滤并将它们切换到简单的 Kafka Connector 配置 简单的 Kafka 配置是什么意思? Kafka Connect 如何支持数组字段

name: topic_name
type: array
item: Topic file

这是否可能将其作为字符串而不是数组消耗到数据库

"fields":[{
  "name":"item_id","type":{
     "type":"array","items":["null","string"]
  },"default":[]
}]
}

解决方法

Kafka Connect 框架本身没有暴露类型的限制,它在 JDBC 接收器的源代码中拒绝了数组。

有一个出色的 PR 为 Postgres 提供支持 - https://github.com/confluentinc/kafka-connect-jdbc/pull/805

不清楚您所说的“简单”是什么意思,但如果您想使用不同的连接器,则需要安装它,然后更改类。例如,也许 MongoDB 接收器处理数组。我知道 S3 和 HDFS 接收器确实......

是否可以将 Sink Connector 与简单的 Kafka Connector 结合起来

同样,不确定您的意思,但连接器通常不会“链接在一起”。虽然您可以使用带有转换的 MirrorMaker2 来有效地完成与 Kafka Streams 相同的工作,但最好为此使用更合适的工具

这是否可能将其作为字符串而不是数组消耗到数据库中

当然,如果消息字段实际上是一个字符串。正如建议的那样,您将需要在接收器连接器使用它之前处理消息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...