历史版本8 :配置ClickHouse資料源 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:

目錄:

1. 概述编辑

1.1 版本

 FineDataLink 版本功能變動
3.2
定時任務中支援讀取 ClickHouse
3.7
定時任務支援寫入 ClickHouse
4.0.28管道任務支援寫入 ClickHouse
4.1.6.3資料服務支援 ClickHouse
4.1.13.3
資料開發-實時任務寫入支援 ClickHouse
4.2.1.4資料開發-實時任務中的 DB 匯出功能支援新增流的無主鍵插入
4.2.8.4適配高版本驅動

1.2 簡介

ClickHouse 是面向列的資料庫管理系統(DBMS),用於對查詢進行聯機分析處理(OLAP)。

FineDataLink 支援連結 ClickHouse,進行定時任務讀寫、管道任務寫入、作為資料服務資料發佈源、實時任務寫入。

注:ClickHouse 資料庫的引擎需要是 Atomic 引擎,才支援寫入時自動建表功能。

2. 準備工作编辑

2.1 前提條件

詳情請參見:前提條件

2.2 版本和驅動

下載驅動,並將其上傳至 FineDataLink,如何上傳可參見:驅動管理 第 2 節。

支援的資料庫版本驅動下載
20.1

clickhouse

22.6

clickhouse4j-1.4.4-SNAPSHOT.jar


Clickhouse 8.5.zip
注:DateTime64 類型的完整範圍為:[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999],若需使用完整範圍,請使用此驅動。當 DateTime64 類型寫入超出完整範圍時,會隨機填入一個在範圍內的日期值。

2.3 具體連結步驟

建立資料連結步驟請參見:建立並管理資料源

配置資料連結時,驅動需要切換為「自訂」,換為本文 2.2 節的驅動。

3. 使用資料源编辑

3.1 資料開發-定時任務


配置好資料源後即可在「定時任務」中使用資料源,詳情參見:定時任務概述

3.2 資料開發-實時任務

當 DB表匯出選擇 clickhouse:

5.0.0.4 及之後版本,當前任務中存在產生更新流的算子&寫入 clickhouse 時,不支援無主鍵同步;會產生更新流的算子:CDC輸入、分組匯總、資料聯動(多個實時資料源進行聯動)。

選擇去向類型說明
已存在表

表類型為除 collapsingMergeTree 外的其他表引

  • 欄位映射處,不展示主鍵列

  • 寫入方式處,不支援配置主鍵映射,不支援配置邏輯刪除

表引擎為 collapsingMergeTree 

欄位映射:

  • 展示該表的排序鍵,即order by欄位

  • 展示該表宣告的sign欄位,且該欄位不能配置與來源表欄位的映射關係

  • 當選擇的表沒有排序鍵時,報錯:該表沒有宣告排序鍵,不支援寫入

寫入方式:

  • 直接使用排序鍵配置進行映射,不支援自訂

  • 支援配置邏輯刪除

自動建表

僅支援 collapsingMergeTree 的邏

欄位映射

  • 使用者手動設定排序鍵,且必須配置排序鍵

  • 自動新增一個欄位為sign欄位,且該欄位不能配置與來源表欄位的映射關係在欄位行中用提示 icon對sign欄位進行說明:用於 clickhouse 表引擎進行資料合併

寫入方式:

  • 直接使用排序鍵配置進行映射,不支援自訂

  • 支援配置邏輯刪除

    1)當匯出到除 collapsingMergeTree 外的其他表引擎時:

    • 將插入事件的資料直接插入到目標表。

    • 遇到刪除事件、更新事件時則報錯。

    2)當匯出到 collapsingMergeTree 時,映射說明詳情參見本文 3.3 節內容。

    3)目標端使用已存在表時,表中需要有_fdl_sign欄位來標記刪除情況。

    3.3 資料管道

    配置好資料源後即可在「資料管道」中將使用資料源,詳情參見:資料管道概述

    clickhouse 作為寫入端時欄位映射說明

    當向目標表寫入資料時,按照 CollapsingMergeTree 表引擎進行寫入。

    選擇去向類型說明
    自動建表

    使用 CollapsingMergeTree 表引擎,將邏輯主鍵設定為 order by 欄位

    注:建立表時,來源表欄位不能出現 sign ,會和標識增刪改的 sign 欄位重名導致同步失敗。

    已存在表

    當選擇已存在表時,只能選擇由 CollapsingMergeTree 表引擎建立的表,並且要指定 order by 欄位,在邏輯主鍵一欄中進行展示

    注:如果能獲取表的 order by 欄位,則支援設定已存在表為目標表,否則不支援設定為目標表。

    clickhouse 作為目標端的寫入邏輯為:

    • 對於插入的資料,直接 insert,並標記其 sign 為 1

    • 對於刪除的資料,直接insert一條,邏輯主鍵的資料,並標記其sign為-1   如果是邏輯刪除,insert 更新資料、sign 為 1 的資料即可

    • 對於更新的資料, insert 更新資料、sign 為 1 的資料即可。

    注:因為 CollapsingMergeTree 表的合併不定時,所以使用實時同步的表時,需要在使用前手動觸發一次合併,或者在查詢 SQL 使用集合方式,計算時去除掉重複資料的影響。

    方式一:直接在 SQL 中使用集合方式,集合範例如下所示:

    select name, sum(order_amt*sign) as order_amt from default.test_version_collapsing 
    group by name 
    having sum(sign) > 0

    方式二:在使用前觸發一次合併,「OPTIMIZE TABLE test.ods_real_time_order FINAL

    方式三:直接在查詢的 SQL 。select 表名後加 final ,比如 SELECT * FROM gbn_onl_mix.union_order_onl_all_test final WHERE dt = '2023-05-28'。

    3.4 資料服務

    配置好資料源後即可在「資料服務」中將使用資料源,詳情參見:資料服務概述