全部產品
Search
文件中心

Hologres:基於Common Table鏈路訪問MaxCompute

更新時間:Jan 15, 2026

Hologres自V3.0.38版本開始,支援MaxCompute加速鏈路全新升級,該鏈路稱為Common Table鏈路。本文為您介紹如何通過Common Table鏈路訪問MaxCompute。

功能介紹

Common Table鏈路通過C++ Native讀取 MaxCompute中的資料,相比現在的SQE/HQE鏈路具備如下優勢:

說明

支援表示支援,不支援表示不支援。

對比項

SQE/HQE鏈路

Common Table鏈路

效能

非常強,相比SQE/HQE效能提升33%,相較於基於開放儲存StorageAPI讀效能提升200%以上。

動態脫敏表

需要二次設定規則。

可以繼承MaxCompute中設定的脫敏規則,查詢到的資料和使用MaxCompute查詢結果一致。

Schema Evolution

不支援直讀檔案,效能稍差。

支援直讀檔案,效能強。

落盤加密表

  • 支援使用KMS KEY加密的表。

  • 不支援使用Default KEY加密的表。

  • 支援使用KMS KEY加密的表。

  • 支援使用Default KEY加密的表。

    說明

    需要Hologres版本>=3.2

ACID 1.0 表

不支援

支援

PK Delta Table

不支援

支援

Append Delta Table

不支援

支援

許可權說明

  • 通過Common Table鏈路訪問基於Foreign Table或External Database方式建立的MaxCompute外部表格,需要具備以下許可權。為使用者授予訪問MaxCompute專案和表的許可權,詳情請參見通過命令系統管理使用者許可權

    為了對齊MaxCompute中查詢資料的許可權,自Hologres V4.0開始許可權校正做了如下變更。

    MaxCompute外部表格建立方式

    操作

    需具備的MaxCompute許可權(V3.0、V3.1和V3.2版本)

    需具備的MaxCompute許可權(V4.0及以上版本)

    Foreign Table方式

    IMPORT FOREIGN SCHEMA大量建立MaxCompute外部表格

    Describe、List

    Describe、List

    查詢資料

    Describe、Select

    Select

    External Database方式

    查看External Table的中繼資料

    Describe

    Describe

    查詢資料

    Describe、Select

    Select

  • Hologres當前僅支援讀取MaxCompute Delta Table的最新快照。

  • 當前暫不支援從Hologres側回寫資料至MaxCompute Delta Table。

功能更新

功能說明

支援版本

支援讀取MaxCompute中的JSON類型

>=4.1.1

支援查詢 MaxCompute Append Delta Table

>= 3.0.40

>= 3.1.10

>=3.2.0

>=4.0.0

支援查詢 MaxCompute DeltaTable 使用 spillRead,用於解決 未Spill 的檔案過多時,查詢報錯

MaxCompute csdk open reader failed: storage/formats/orcfile/change_log_reader_util.cpp(255): InvalidArgument: ODPS-0010000:InvalidArgument:Need spill read but TmpDir or TmpCapability no specified.

>= 3.0.41

>= 3.1.10

>= 3.2.0

>= 4.0.0

支援讀取帶 Defaul Vaule 值的 MaxCompute 表

>=3.0.40

>= 3.1.10

>=3.2.0

>=4.0.0

支援 Auto Split Size ,可以根據執行個體規格,自動判斷 Split Size,詳細使用方式情節見下文

>=3.1.33

>=3.2.0

>=4.0.0

支援查詢 TIMESTAMP_NTZ 類型

>= 3.0.41

>= 3.1.10

>=3.2.0

>=4.0.0

支援 Delta Table 的 Clustering Key、Primary Key 等屬性的等值過濾下推,提升過濾效果和查詢效能

>= 4.0.6

開啟方式

您可以根據具體的使用情境選擇合適的開啟方式。

  • SESSION層級

    -- SESSION層級開啟,需要和查詢/DML一起執行
    SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
  • 資料庫層級

    -- 資料庫層級開啟
    ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
  • 執行個體層級

    -- 執行個體層級開啟
    ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';

關閉方式

  • SESSION層級

    -- SESSION層級關閉,需要和查詢/DML一起執行
    SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • 資料庫層級

    -- 資料庫層級關閉
    ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • 執行個體層級

    -- 執行個體層級關閉
    ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';

查看當前的使用鏈路

  • 您可使用如下SQL查看,若返回結果顯示odps:common_table,dlf:hqe,則表示當前使用的Common Table鏈路。

    SHOW hg_experimental_external_catalog_routing;
  • 對於歷史查詢可通過慢Query日誌查看query_extinfo欄位,若出現driver:CommonTable ,則表示使用的Commen Table鏈路。

Auto Split Size

Auto Split Size功能參數預設值為off,即預設為關閉,可以根據實際情境按需開啟或關閉,具體設定方法如下:

開啟Auto Split Size

V4.0及以上版本

  • SESSION層級開啟

    -- session 層級開啟
    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
  • 資料庫層級開啟

    -- 資料庫層級開啟
    ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
  • 執行個體層級開啟

    -- 執行個體層級開啟
    ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';

V4.0以下版本

  • SESSION層級開啟

    -- session 層級開啟
    SET hg_experimental_enable_common_table_auto_split_size = 'on';
  • 資料庫層級開啟

    -- 資料庫層級開啟
    ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on';
  • 執行個體層級開啟

    -- 執行個體層級開啟
    ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';

關閉Auto Split Size

V4.0及以上版本

  • SESSION層級關閉

    -- session 層級關閉
    SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
  • 資料庫層級關閉

    -- 資料庫層級關閉
    ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
  • 執行個體層級關閉

    -- 執行個體層級關閉
    ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';

V4.0以下版本

  • SESSION層級關閉

    -- session 層級關閉
    SET hg_experimental_enable_common_table_auto_split_size = 'off';
  • 資料庫層級關閉

    -- 資料庫層級關閉
    ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off';
  • 執行個體層級關閉

    -- 執行個體層級關閉
    ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';