全部產品
Search
文件中心

Hologres:DataHub即時同步

更新時間:Jul 26, 2024

將DataHub資料同步至Hologres適用於需要即時資料分析、即時監控、即時報表和複雜資料結構處理的情境,通過結合DataHub和Hologres的能力,可以提升資料處理和分析的效率和準確性。本文介紹如何建立DataHub資料同步任務以及常見問題。

背景資訊

DataHub提供資料Sink/Source功能,即資料同步功能,支援將對應Topic中的資料即時/准即時的同步到第三方阿里雲產品中,打通阿里雲產品間的資料流通。關於DataHub資料同步功能介紹詳情,請參見概述

DataHub與Hologres的映射關係如下表所示。

DataHub

Hologres

Project

Database

Topic

Table

同步情境與策略介紹

同步情境

同步情境

說明

逐條插入

將來源資料庫中資料逐條插入到目標資料庫中,適用於將DataHub資料全量同步至Hologres的情境。

回放

通過分析並重新執行Binlog資料庫操作記錄日誌,將來源資料庫變更操作應用到目標資料庫中,最終確保資料一致性。適用於DTS同步資料至DataHub,再將DataHub資料同步至Hologres的鏈路情境,其中DataHub相當於Binlog。

說明

DTS同步資料至DataHub,會在資料列的基礎上添加附加列,用於記錄資料的操作資訊。DTS同步資料至DataHub,附加列的命名存在新舊差異,詳情請參見修改資料同步的附加列規則

同步策略

同步策略

說明

覆蓋(replace)

資料寫入發生主鍵衝突,新的資料覆蓋老資料並寫入,確保目標資料庫中的資料與來源資料保持一致。

忽略(ignore)

資料寫入發生主鍵衝突,忽略新資料,即資料不更新,避免重複資料的匯入和覆蓋,保持目標資料庫的資料完整性。

注意事項

  • 僅支援將DataHub TUPLE類型資料同步到Hologres。

  • 資料寫入分區表必須先在Hologres中建立分區子表,詳情請參見CREATE PARTITION TABLE

  • 每個同步任務都會佔用部分串連數,每個任務佔用的串連數等於DataHub Topic的Shard數。

準備工作

  1. 開通DataHub服務並準備DataHub資料。具體操作,請參見快速入門

  2. 購買Hologres執行個體並建表,本文以表lineitem為樣本。具體操作,請參見購買Hologres通過HoloWeb串連Hologres建立表

    DataHub與Hologres的資料類型映射如下表所示。

    DataHub

    Hologres

    TINYINT

    SMALLINT

    SMALLINT

    SMALLINT

    INTEGER

    INTEGER

    BIGINT

    BIGINT

    FLOAT

    REAL

    DOUBLE

    DOUBLE PRECISION

    DECIMAL

    DECIMAL

    STRING

    TEXT

    BOOLEAN

    BOOLEAN

    TIMESTAMP

    TIMESTAMPTZ

    樣本建表語句如下。

    BEGIN;
    CREATE TABLE lineitem ( 
    L_ORDERKEY BIGINT NOT NULL,
    L_PARTKEY BIGINT NOT NULL,
    L_SUPPKEY BIGINT NOT NULL,
    L_LINENUMBER BIGINT NOT NULL,
    L_QUANTITY DECIMAL(20,10),
    L_EXTENDEDPRICE DECIMAL(20,10),
    L_DISCOUNT DECIMAL(20,10),
    L_TAX DECIMAL(20,10),
    L_RETURNFLAG TEXT,
    L_LINESTATUS TEXT,
    L_SHIPDATE TIMESTAMPTZ,
    L_COMMITDATE TIMESTAMPTZ,
    L_RECEIPTDATE TIMESTAMPTZ,
    L_SHIPINSTRUCT TEXT,
    L_SHIPMODE TEXT,
    L_COMMENT TEXT
    );
    caLL set_table_property('lineitem', 'orientation', 'column');
    COMMIT;

建立同步任務

  1. 登入DataHub服務控制台,單擊已建立的Topic,進入Topic詳情頁。

  2. 單擊Topic詳情頁右上方的+同步

  3. 單擊Hologres,在建立Connector頁面配置參數。

    參數

    說明

    Instance

    Hologres執行個體的ID。進入Hologres管理主控台,擷取執行個體ID

    Database

    用於接收DataHub資料的Hologres資料庫名稱。

    Table

    用於接收DataHub資料的Hologres表名稱lineitem

    主鍵衝突策略

    主鍵衝突時的資料更新策略。取值說明:

    • replace(預設值):資料寫入發生主鍵衝突時,新資料寫入覆蓋老資料。

    • ignore:資料寫入發生主鍵衝突時,忽略新資料,即資料不更新,仍然使用老資料。

    關於資料同步策略詳情,請參見同步策略

    同步情境

    資料同步的使用情境。取值說明:

    • default(預設值):逐條插入。

    • dts:通過DTS同步資料至DataHub時,若啟用新附加列規則,選擇此參數。

    • dts_old:通過DTS同步資料至DataHub時,若未啟用新附加列規則,選擇此參數。

    關於資料同步情境詳情,請參見同步情境

    匯入欄位

    需要匯入Hologres的欄位。可以根據實際業務需求選擇匯入部分或全部欄位。

    鑒權模式

    預設為AccessKey。

    AccessKey ID

    訪問Hologres執行個體的AccessKey ID。您可以單擊AccessKey 管理,擷取使用者的AccessKey ID。

    AccessKey Secret

    訪問Hologres執行個體的AccessKey Secret。您可以單擊AccessKey 管理,擷取AccessKey Secret。

    Timestamp Unit

    同步時間單位,取值說明。

    • MICROSECOND:微秒,為預設值。

    • MILLISECOND:毫秒。

    • SECOND:秒。

  4. 單擊建立,同步DataHub的資料至Hologres。

    建立Connector後,您可以在Topic詳情頁的同步任務中查看即時同步資料的狀態。

  5. Hologres查詢資料。

    您可以串連Hologres執行個體開發工具,即時查詢同步至Hologres中的資料。Hologres串連詳情,請參見概述。執行以下樣本查詢語句。

    SELECT COUNT(*) FROM lineitem;

常見問題

為您介紹在使用Hologres過程中的常見報錯,以便於您能自行排查並解決問題。

  • 問題1

    • 報錯資訊

      ErrorMessage: Import field not found in dest schema.
    • 報錯原因

      • Hologres表中未包含同步任務指定的匯入欄位。

      • 任務的同步情境指定為default,但是匯入欄位包含DTS同步到DataHub產生的附加列。

    • 解決方案

      • 重新建立Hologres表,加上未包含的匯入欄位;修改同步任務的匯入欄位,去掉Hologres表中不存在的欄位。

      • 重新建立同步任務,並指定同步情境為dtsdts_old

  • 問題2

    • 報錯資訊

      ErrorMessage: Column type not match with Holo column.
    • 報錯原因

      DataHub Topic中的欄位類型與Hologres表中的欄位類型不符。

    • 解決方案

      根據資料類型映射,重新建立Hologres表,設定正確的欄位類型。

  • 問題3

    • 報錯資訊

      ErrorMessage: Not import column xxx not allow null and no default value.
    • 報錯原因

      Hologres表中的部分欄位未包含在同步任務的匯入欄位中,但是這部分欄位設定了not null屬性,並且未設定default value。

    • 解決方案

      重建立Hologres表,對未包含在同步任務匯入欄位中的欄位,不設定not null屬性或設定default value。