一、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)创建一个结构表(结构化的表)。
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] 这些列。