一、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] 這些列。