ClickHouse 22.8.9.24:如何从AvroConfluent格式Kafka消息获取元数据与头部?
在ClickHouse 22.8.9.24中使用AvroConfluent格式获取Kafka元数据与头部
- 可以直接获取元数据和头部,不需要在Kafka端把它们放进消息值里
- ClickHouse针对Kafka表提供了一系列虚拟列,不管消息体用什么格式(包括AvroConfluent),都能直接读取这些元数据:
- 基础元数据:
_topic(消息所属Topic)、_offset(消息偏移量)、_timestamp(消息时间戳)、_partition(分区号) - 消息头部:
_headers,类型为Array(Tuple(String, String)),存储Kafka消息的键值对头部信息
- 基础元数据:
- 示例建表语句:
CREATE TABLE kafka_avro_table ( -- 这里定义Avro schema对应的业务字段 id UInt64, name String ) ENGINE = Kafka SETTINGS kafka_broker_list = 'your_broker:9092', kafka_topic_list = 'your_avro_topic', kafka_group_name = 'ch_consumer_group', format = 'AvroConfluent', format_avro_schema_registry_url = 'http://your_schema_registry:8081';
- 查询时直接引用虚拟列即可:
SELECT _topic, _offset, _timestamp, _headers, id, name FROM kafka_avro_table LIMIT 10;
- 注意:如果你的头部值是非字符串类型,
_headers会自动将其转为Base64编码的字符串,需要自行解码处理
内容的提问来源于stack exchange,提问作者Zaoza14
相关产品推荐
相关产品推荐

