使用 Vector、Kafka 和 ClickHouse
许可协议
获取连接信息
你的 ClickHouse Cloud 服务的连接信息可在 ClickHouse Cloud 控制台中查看。
选择一个服务,然后点击 Connect:
选择 HTTPS。连接信息会显示在示例
curl 命令中。
如果你使用的是自管理 ClickHouse,则连接信息由你的 ClickHouse 管理员配置。
步骤
- 创建 Kafka
githubtopic,并写入 GitHub 数据集。
ClickHouse/ClickHouse 仓库。
- 确保目标表已创建。下面我们使用默认数据库。
- 下载并安装 Vector。创建一个
kafka.toml配置文件,并根据你的 Kafka 和 ClickHouse 实例修改其中的值。
- 此示例已针对 Confluent Cloud 进行测试。因此,
sasl.*和ssl.enabled安全选项在自管理场景中可能并不适用。 - 配置参数
bootstrap_servers不需要协议前缀,例如pkc-2396y.us-east-1.aws.confluent.cloud:9092 - source 参数
decoding.codec = "json"可确保消息以单个 JSON 对象的形式传递到 ClickHouse sink。如果将消息作为 String 处理,并使用默认的bytes值,则消息内容会被追加到message字段中。在大多数情况下,这都需要像 Vector 入门 指南中所述的那样,在 ClickHouse 中进行处理。 - Vector 会向消息中添加多个字段。在本示例中,我们通过配置参数
skip_unknown_fields = true在 ClickHouse sink 中忽略这些字段。这会忽略不属于目标表 schema 的字段。你也可以根据需要调整 schema,以确保这些元字段 (如offset) 被添加进去。 - 请注意,sink 通过参数
inputs引用事件 source。 - 请注意 此处 所述的 ClickHouse sink 行为。为获得最佳吞吐量,你可能需要调优
buffer.max_events、batch.timeout_secs和batch.max_bytes参数。根据 ClickHouse 的建议,单个批次中的事件数至少应为 1000。对于吞吐量稳定且较高的场景,你可以增大参数buffer.max_events。而对于吞吐量波动较大的场景,则可能需要调整参数batch.timeout_secs - 参数
auto_offset_reset = "smallest"会强制 Kafka source 从 topic 的起始位置开始消费,从而确保我们能消费步骤 (1) 中发布的消息。你可能需要不同的行为。更多详情请参见这里。
- 启动 Vector
VECTOR_LOG=debug;如果你遇到问题,这些日志会很有帮助。
- 确认数据已成功插入。