Clickhouse 持久化 Kafka 数据

将Kafka中数据导入ClickHouse的标准流程是:

  • 在ClickHouse中建立Kafka Engine 外表,作为Kafka数据源的一个接口
  • 在ClickHouse中创建普通表(通常是MergeTree系列)存储Kafka中的数据
  • 在ClickHouse中创建Materialized View, 监听Kafka中的数据,并将数据写入ClickHouse存储表中

ClickHouse 提供了Kafka Engine 作为访问Kafka集群的一个接口。

CREATE TABLE kafka.Vehicle (
json String
) ENGINE = Kafka SETTINGS
kafka_broker_list = 'xxx.xxx.xxx.xxx:9092',
kafka_topic_list = 'Vehicle',
kafka_group_name = 'clickhouse1',
kafka_format = 'LineAsString',
kafka_num_consumers = 1;

必选参数:

  • kafka_broker_list: 这里填写Kafka服务的broker列表,用逗号分隔
  • kafka_topic_list: 这里填写Kafka topic,多个topic用逗号分隔
  • kafka_group_name:这里填写消费者group名称
  • kafka_format__:Kafka数据格式, ClickHouse支持的Format, 详见这里

创建存储Kafka数据的目标表,该表就是最终存储Kafka数据:

CREATE TABLE kafka_sync.VehicleWarningRaw
(
ts DateTime,
json String
) ENGINE = MergeTree()
ORDER BY ts
TTL ts + INTERVAL 1 MONTH DELETE;

创建Metrialized View 抓取数据:

CREATE MATERIALIZED VIEW kafka.Vehicle_consumer TO kafka_sync.Vehicle AS
SELECT now() AS ts, json AS json
FROM kafka.Vehicle;

也可以通过DETACH/ATTACH 来取消关联,或者重新关联到某个目标表。

DETACH TABLE kafka.Vehicle_consumer;
ATTACH TABLE kafka.Vehicle_consumer;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值