Clickhouse基于kafka表引擎

基于kafka表引擎

实现步骤

  1. 创建引擎表
  2. 创建本地表
  3. 创建物化视图(作用是基于引擎表建立向本地表的映射)

创建引擎表

CREATE TABLE kafka_engine_table (`name` String, `age` UInt64 ) ENGINE = Kafka () SETTINGS kafka_broker_list = '192.168.5.135:13502',
kafka_topic_list = 'clickhouse',
kafka_group_name = 'clickhouse',
kafka_format = 'JSONEachRow',
kafka_skip_broken_messages = 1;

  • 参数说明

    • kafka_broker_list:Kafka服务的broker列表,用逗号分隔
    • kafka_topic_list:Kafka topic,多个topic用逗号分隔
    • kafka_group_name:消费者group名称
    • kafka_format:CSV / JSONEachRow / AvroConfluent
    • 可选参数:
      • kafka_skip_broken_messages:填写大于等于0的整数,表示忽略解析异常的Kafka数据的条数。如果出现了N条异常后,后台线程结束,Materialized View会被重新安排后台线程去监听数据(默认值:0)
      • kafka_num_consumers:单个Kafka Engine 的消费者数量,通过增加该参数,可以提高消费数据吞吐,但总数不应超过对应topic的partitions总数
      • kafka_row_delimiter:消息分隔符
      • kafka_schema:对于kafka_format需要schema定义的时候,其schema由该参数确定
      • kafka_max_block_size:该参数控制Kafka数据写入目标表的Block大小,超过该数值后,就将数据刷盘
      • kafka_commit_every_batch:批量提交时的每批次大小(默认值:0)
      • kafka_thread_per_consumer:kafka_thread_per_consumer:为每个消费者提供独立的线程(默认值:0)。启用后,每个使用者将并行并行地刷新数据;否则,来自多个使用者的行将被压缩以形成一个块
  • 重点说明:

    • kafka_skip_broken_messages很重要,如果此参数不设置或者设置为0的话会导致数据无法被监听。

创建本地表

# 这里是基于mergeTree引擎创建的,当然也可以指定其他参数,比如分区等信息
CREATE TABLE kafka_table (`name` String, `age` UInt64) ENGINE = MergeTree() ORDER BY age;

创建物化视图

CREATE MATERIALIZED VIEW kafka_view TO kafka_table AS select * from kafka_engine_table;

# 语法:CREATE MATERIALIZED VIEW 物化视图名称 TO 目标表 AS 基于引擎表的SQL语句

演示

  1. 向kafka中为clickhouse的topic发送测试数据

  1. 查询本地表中的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我教你啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值