Hologres V3.0.38 以降、MaxCompute にアクセスするためのアップグレードされたパスとして Common Table が導入されました。このドキュメントでは、Common Table を使用して MaxCompute にアクセスする方法について説明します。
はじめに
Common Table を使用すると、Hologres は C++ ネイティブリーダーを使用して MaxCompute からデータを読み取ります。既存の SQE/HQE メカニズムに比べて、次のような利点があります。
はサポートされていることを示し、
はサポートされていないことを示します。
比較項目 | SQE/HQE | Common Table |
パフォーマンス | 高い | 非常に高い。SQE/HQE メカニズムに比べてパフォーマンスが 33% 向上し、オープンストレージの Storage API を介したデータ読み取りと比較して 200% 以上向上します。 |
動的データマスキング | テーブルごとに個別の構成が必要です。 | MaxCompute からデータマスキングルールを継承し、MaxCompute からのクエリ結果との一貫性を確保します。 |
スキーマエボリューション | 直接読み取りをサポートしていないため、パフォーマンスが若干低下します。 | 直接読み取りをサポートし、高いパフォーマンスを実現します。 |
保存時の暗号化 |
|
|
ACID 1.0 テーブル |
|
|
PK Delta Table |
|
|
Append Delta Table |
|
|
権限
Common Table を介して、Hologres に外部テーブルとしてマッピングされた MaxCompute にアクセスするには、テーブルにリストされている関連権限が必要です。これらの権限の付与に関する詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。
Hologres V4.0 以降では、権限検証に変更が導入されていることにご注意ください。
テーブルタイプ
操作
必要な MaxCompute 権限 (Hologres V3.0、V3.1、V3.2)
必要な MaxCompute 権限 (Hologres V4.0 以降)
外部テーブル
IMPORT FOREIGN SCHEMA
Describe, List
Describe, List
データクエリ
Describe, Select
Select
外部テーブル
メタデータ表示
Describe
Describe
データクエリ
Describe, Select
Select
現在、Hologres は MaxCompute Delta Table の最新のスナップショットの読み取りのみをサポートしています。
Hologres から MaxCompute Delta Table へのデータの書き戻しはサポートされていません。
機能
機能 | サポートされるバージョン |
MaxCompute Append Delta テーブルのクエリ | >= 3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
スピルされていないファイルが多すぎることによるエラーを解決するための、MaxCompute Delta Table のクエリにおける | >= 3.0.41 >= 3.1.10 >= 3.2.0 >= 4.0.0 |
デフォルト値を含む MaxCompute テーブルの読み取り | >=3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
インスタンスの仕様に基づいて分割サイズを自動的に決定する Auto 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 のクラスタリングキーやプライマリキーなどの属性に対する等価フィルターの述語プッシュダウンによる、フィルター効率とクエリパフォーマンスの向上 | >= 4.0.6 |
Common Table の有効化
シナリオに合わせて方法を選択してください。
セッションレベル
-- セッションレベルで Common Table を有効にします。クエリまたは DML 文と一緒に実行します。 SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';データベースレベル
-- データベースレベルで Common Table を有効にします。 ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';インスタンスレベル
-- インスタンスレベルで Common Table を有効にします。 ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Common Table の無効化
セッションレベル
-- セッションレベルで Common Table を無効にします。クエリまたは DML 文と一緒に実行します。 SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';データベースレベル
-- データベースレベルで Common Table を無効にします。 ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';インスタンスレベル
-- インスタンスレベルで Common Table を無効にします。 ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
現在のアクセスパスの確認
次の SQL 文を実行して、MaxCompute にアクセスするための現在のメカニズムを確認します。
odps:common_table,dlf:hqeは、Common Table が使用されていることを示します。SHOW hg_experimental_external_catalog_routing;過去のクエリについては、スロークエリログの
query_extinfoフィールドを確認してください。driver:CommonTableが表示される場合、これらのクエリには Common Table が使用されていました。
Auto Split Size
Auto Split Size パラメーターは、デフォルトで off に設定されています。必要に応じて有効にできます。
Auto Split Size の有効化
V4.0 以降
セッションレベル
-- セッションレベルで Auto Split Size を有効にします SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';データベースレベル
-- データベースレベルで Auto Split Size を有効にします ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';インスタンスレベル
-- インスタンスレベルで Auto Split Size を有効にします ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
V4.0 より前のバージョン
セッションレベル
-- セッションレベルで Auto Split Size を有効にします SET hg_experimental_enable_common_table_auto_split_size = 'on';データベースレベル
-- データベースレベルで Auto Split Size を有効にします ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on';インスタンスレベル
-- インスタンスレベルで Auto Split Size を有効にします ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';
Auto Split Size の無効化
V4.0 以降
セッションレベル
-- セッションレベルで Auto Split Size を無効にします SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';データベースレベル
-- データベースレベルで Auto Split Size を無効にします ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';インスタンスレベル
-- インスタンスレベルで Auto Split Size を無効にします ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
V4.0 より前のバージョン
セッションレベル
-- セッションレベルで Auto Split Size を無効にします SET hg_experimental_enable_common_table_auto_split_size = 'off';データベースレベル
-- データベースレベルで Auto Split Size を無効にします ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off';インスタンスレベル
-- インスタンスレベルで Auto Split Size を無効にします ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';