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 | 直讀檔案,效能稍差。 | 直讀檔案,效能強。 |
落盤加密表 |
|
|
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 的檔案過多時,查詢報錯 | >= 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';