仅当您的数据较为简单且仅包含基本类型 (例如 int) 时,才应使用此 连接器。不支持 Map 等 ClickHouse 特有类型。
许可证
步骤
准备连接详细信息
你的 ClickHouse Cloud 服务的连接信息可在 ClickHouse Cloud 控制台中查看。
选择一个服务,然后点击 Connect:

curl 命令中。

1
安装 Kafka Connect 和连接器
我们假设你已经下载了 Confluent 软件包并已在本地完成安装。请按照此处文档中的说明安装连接器。如果你使用 confluent-hub 安装方式,本地配置文件将会被更新。为了将数据从 Kafka 发送到 ClickHouse,我们使用该连接器的 Sink 组件。
2
下载并安装 JDBC 驱动
3
准备配置
请按照这些说明设置与你的安装类型对应的 Connect,并注意 standalone 和分布式集群之间的差异。如果使用 Confluent Cloud,则应采用分布式部署。以下参数与将 JDBC 连接器 搭配 ClickHouse 使用相关。完整参数列表可在此处查看:
_connection.url_- 应采用jdbc:clickhouse://<clickhouse host>:<clickhouse http port>/<target database>的形式connection.user- 对目标数据库具有写入权限的用户table.name.format- 要插入数据的 ClickHouse 表。该表必须已存在。batch.size- 单个批次发送的行数。请确保该值设置得足够大。根据 ClickHouse 的建议,1000 应视为最小值。tasks.max- JDBC Sink 连接器 支持运行一个或多个任务。这可以用来提升性能。结合批次大小,这是提升性能的主要方式。value.converter.schemas.enable- 如果使用 Schema Registry,则设为 false;如果将 schema 嵌入消息中,则设为 true。value.converter- 根据你的数据类型进行设置,例如对于 JSON,设为io.confluent.connect.json.JsonSchemaConverter。key.converter- 设为org.apache.kafka.connect.storage.StringConverter。我们使用 String 类型的 key。pk.mode- 与 ClickHouse 无关。设为 none。auto.create- 不受支持,必须设为 false。auto.evolve- 我们建议将此项设为 false,尽管未来可能会支持。insert.mode- 设为 “insert”。当前不支持其他模式。key.converter- 根据你的 key 类型进行设置。value.converter- 根据 topic 中的数据类型进行设置。该数据必须具有受支持的 schema,即 JSON、Avro 或 Protobuf 格式。
value.converter.schemas.enable- 设为 false,因为我们使用 Schema Registry。如果你将 schema 嵌入每条消息中,则设为 true。key.converter- 设为 “org.apache.kafka.connect.storage.StringConverter”。我们使用 String 类型的 key。value.converter- 设为 “io.confluent.connect.json.JsonSchemaConverter”。value.converter.schema.registry.url- 设置 schema server 的 URL,并通过参数value.converter.schema.registry.basic.auth.user.info提供 schema server 的凭据。
4
创建 ClickHouse 表
请确保该表已创建;如果它因前面的示例已存在,请先将其删除。下面展示了一个与精简版 GitHub 数据集兼容的示例。请注意,其中不包含任何当前尚不受支持的 Array 或 Map 类型:
5
启动 Kafka Connect
以 standalone 或 distributed 模式启动 Kafka Connect。
6
将数据添加到 Kafka
使用提供的脚本和配置向 Kafka 写入消息。你需要修改 github.config,加入你的 Kafka 凭据。该脚本当前已配置为与 Confluent Cloud 配合使用。此脚本可用于将任何 ndjson 文件插入到 Kafka topic 中。它会尝试自动为你推断 schema。提供的示例 config 只会插入 10k 条消息——如有需要,请在此修改。此 configuration 在插入到 Kafka 时还会从数据集中移除所有不兼容的 Array 字段。这是 JDBC 连接器 将消息转换为 INSERT 语句所必需的。如果你使用自己的数据,请确保要么在每条消息中都插入 schema (将 _value.converter.schemas.enable _设为 true) ,要么确保你的 client 发布的消息引用了 registry 中的 schema。Kafka Connect 应该会开始消费消息并将行插入到 ClickHouse 中。请注意,关于 “[JDBC Compliant Mode] Transaction isn’t supported.” 的警告是预期行为,可以忽略。对目标表 “Github” 执行一个简单的查询应能确认数据已插入。