适用于 Kafka ClickPipe 的 Schema Registry
ClickPipes 支持与 Schema Registry 集成,以解码采用 Avro 和 Protobuf 编码的 topics。
Kafka ClickPipes 支持的 Schema Registry
与 Confluent Schema Registry API 兼容的 Schema Registry 均受支持,包括:
- Confluent Schema Registry
- Redpanda Schema Registry
ClickPipes 目前尚不支持 AWS Glue Schema Registry 或 Azure Schema Registry。如果您需要支持这些 Schema Registry,请联系我们的团队。
配置
要在配置 ClickPipes 时集成 Schema Registry ,必须使用以下方法之一:
- 提供 schema subject 的完整路径 (例如
https://registry.example.com/subjects/events)- 可选地,可以在 URL 末尾追加
/versions/[version]来指定特定版本 (否则 ClickPipes 将获取最新版本) 。
- 可选地,可以在 URL 末尾追加
- 提供 schema id 的完整路径 (例如
https://registry.example.com/schemas/ids/1000) - 提供 Schema Registry 的根 URL (例如
https://registry.example.com)
工作原理
ClickPipes 会动态检索并应用已配置的 schema registry 中的 schema。
- 如果消息中嵌入了 schema ID,则会使用该 ID 检索 schema。
- 如果消息中未嵌入 schema ID,则会使用 ClickPipe 配置中指定的 schema ID 或 subject 名称来检索 schema。
- 如果写入消息时未嵌入 schema ID,且 ClickPipe 配置中也未指定 schema ID 或 subject 名称,则不会检索 schema,并会跳过该消息,同时在 ClickPipes 错误表中记录
SOURCE_SCHEMA_ERROR。 - 如果消息不符合 schema,则会跳过该消息,同时在 ClickPipes 错误表中记录
DATA_PARSING_ERROR。 - 仅适用于 Protobuf schema:ClickPipes 会加载所有作为依赖定义的导入 schema。带外部引用的 Avro schema 暂不支持。
模式映射
以下规则适用于检索到的 schema 与 ClickHouse 目标表之间的映射:
- 如果 schema 包含未在 ClickHouse 目标映射中包含的字段,则该字段会被忽略。
- 如果 schema 缺少 ClickHouse 目标映射中定义的字段,则对应的 ClickHouse 列将填充为“零”值,例如 0 或空字符串。请注意,不支持
DEFAULT表达式。 - 如果 schema 字段与 ClickHouse 列不兼容,则该行/消息的插入将失败,并且失败会记录在 ClickPipes 错误表中。请注意,系统支持一些隐式类型转换 (例如数值类型之间) ,但并非全部支持 (例如,Avro 记录字段无法插入到
Int32类型的 ClickHouse 列中) 。