Hologres V3.0.38 以降のバージョンでは、MaxCompute へのアクセスを高速化するためのアップグレードされたパスウェイである Common Table パスウェイがサポートされています。 このトピックでは、Common Table パスウェイを使用して MaxCompute にアクセスする方法について説明します。
特長
Common Table パスウェイは、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 パスウェイを介して MaxCompute 外部テーブルにアクセスするには、次の表に示す権限が必要です。 MaxCompute プロジェクトおよびテーブルにアクセスする権限をユーザーに付与する方法については、「コマンドを使用したユーザー権限の管理」をご参照ください。
MaxCompute でのデータクエリの権限と整合させるため、Hologres V4.0 以降のバージョンでは権限検証が変更されました。
MaxCompute 外部テーブルの作成方法
操作
必要な MaxCompute 権限 (Hologres V3.0、V3.1、V3.2)
必要な MaxCompute 権限 (V4.0 以降)
外部テーブルメソッド
`IMPORT FOREIGN SCHEMA` を使用した MaxCompute 外部テーブルの一括作成
Describe, List
Describe, List
データのクエリ
Describe, Select
Select
外部データベースメソッド
外部テーブルのメタデータの表示
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 |
`spillRead` を使用した 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 |
有効化方法
シナリオに基づいてパスウェイを有効にできます。
セッションレベル
-- セッションレベルでパスウェイを有効にします。 この文は、クエリまたは 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';
シャットダウン方法
セッションレベル
-- セッションレベルでパスウェイを無効にします。 この文は、クエリまたは 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_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';