ClickHouse 对接 Kafka,将数据导入到 SummingMergeTree 表中

一、ClickHouse 和 Kafka 对接

1、官方文档地址

https://clickhouse.tech/docs/zh/engines/table-engines/integrations/kafka/

2、三个步骤

(1)使用引擎创建一个 Kafka 消费者并作为一条数据流(这个表中的数据只能被查询一次,查询完之后会被清空)。

CREATE TABLE `queue`
(
    `date` UInt64, 
    `name` String, 
    `operation` String
)
ENGINE = Kafka('node01:9092:node02:9092,node03:9092', 'topic-name', 'topic-group-id', 'JSONEachRow');

(2)创建一个结构表(结构化的表,count字段是`date`,`name`,`operation`记录出现的次数,count字段会有聚合操作)。

CREATE TABLE `test`
(
    `date` Date, 
    `name` String, 
    `operation` String, 
    `count` UInt64
)
ENGINE = SummingMergeTree((count))
PARTITION BY toYYYYMMDD(date)
ORDER BY (`date`,`name`,`operation`);

(3)创建物化视图,改视图会在后台转换引擎中的数据并将其放入之前创建的表中。

CREATE MATERIALIZED VIEW `queue-view` TO `test` AS
SELECT 
    toDate(date/1000) AS date, 
    name, 
    operation, 
    1 AS count
FROM `queue`
WHERE name IS NOT NULL;

二、将数据导入到 SummingMergeTree

1、SummingMergeTree 简介

(1)主要参数参数

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = SummingMergeTree([columns])
[PARTITION BY expr]
[ORDER BY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]

SummingMergeTree([columns]):[]为选填项,0个或1个参数,columns为一个元组,表示需要进行 sum 操作的列。

[PARTITION BY expr]:按照 expr 进行分区。

[ORDER BY expr]:按照 order by 后面的列(也就是主键)进行聚合,累加 [columns] 这些列。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值