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)創建一個結構表(結構化的表)。

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章