配置ClickHouse資料源

  • 文檔創建者:Fay
  • 編輯次數:16
  • 最近更新:Nikozhan 于 2025-07-28
  • 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 資料服務

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

      附件列表


      主題: 配置資料源
      已經是第一篇
      已經是最後一篇
      • 有幫助
      • 沒幫助
      • 只是瀏覽
      • 评价文档,奖励 1 ~ 100 随机 F 豆!