このトピックでは、Hologres から MaxCompute Delta テーブルにアクセスする方法について説明します。
機能紹介
Hologres V3.0.38 以降、MaxCompute Delta テーブルからデータを読み取ることができます。 Delta テーブルは、MaxCompute の増分データ用のテーブル形式です。 数分単位のデータインポートをサポートし、基盤となるファイル形式として AliORC を使用し、UPSERT セマンティクスをサポートし、Change Data Capture (CDC) 形式で増分データの読み書きができます。 詳細については、「用語」をご参照ください。
前提条件
Hologres インスタンスが有効化されていること。 詳細については、「Hologres インスタンスの購入」をご参照ください。
MaxCompute が有効化され、プロジェクトが作成されていること。 詳細については、「MaxCompute の有効化」をご参照ください。
MaxCompute プロジェクトおよびテーブルにアクセスするために必要な権限が付与されていること。 詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。
注意事項
Hologres は、MaxCompute Delta テーブルの最新のスナップショットの読み取りのみをサポートします。
Hologres から MaxCompute Delta テーブルへのデータの書き戻しはサポートされていません。
MaxCompute Delta テーブルにアクセスするには、GUC パラメーターを設定する必要があります。 このパラメーターはセッションレベルで設定することを推奨します。 MaxCompute Delta テーブルをクエリする前に、次のコマンドを実行してください:
SET hg_experimental_external_catalog_routing = 'odps:common_table';
操作手順
MaxCompute での Delta テーブルの作成
次のいずれかのメソッドを使用してテーブルを作成できます:
DataWorks プラットフォームで、MaxCompute データソースをアタッチしてからテーブルを作成します。
MaxCompute ローカルクライアントを使用してテーブルを作成します。
SQL コマンドは次のとおりです。
CREATE TABLE IF NOT EXISTS mf_dt (pk BIGINT NOT NULL PRIMARY KEY,
val BIGINT NOT NULL)
PARTITIONED BY (dd STRING, hh STRING)
tblproperties ("transactional"="true");MaxCompute でのデータ書き込み
MaxCompute は、次の 2 つのデータ書き込みメソッドをサポートしています:
INSERT INTO または INSERT OVERWRITE を使用して、バッチでデータを書き込みます。 詳細については、「データの挿入または上書き (INSERT INTO | INSERT OVERWRITE)」をご参照ください。
Flink を使用して、ニアリアルタイムでデータを書き込みます。 詳細については、「Flink を使用した MaxCompute へのデータ書き込み」をご参照ください。
このトピックでは、バッチでのデータ書き込みを例として使用します。 SQL コマンドは次のとおりです。
-- INSERT INTO を使用して、mf_dt テーブルのターゲットパーティションにデータを追加します。
INSERT INTO TABLE mf_dt PARTITION(dd='01', hh='01')
VALUES (3, 30), (4, 4), (5, 5);
-- mf_dt テーブルの dd='01' および hh='01' のパーティションにテストデータを挿入します。
INSERT OVERWRITE TABLE mf_dt PARTITION (dd='01', hh='01')
VALUES (1, 1), (2, 2), (3, 3);Hologres での外部データソースマッピングの作成
Hologres は、外部データソースマッピングを作成するための 2 つのメソッドをサポートしています:
外部データベースを使用して、指定した MaxCompute プロジェクト内のすべてのテーブルをマッピングします。 詳細については、「CREATE EXTERNAL DATABASE」をご参照ください。
外部テーブルを使用して、指定したスキーマとテーブルのマッピングをカスタマイズします。 詳細については、「IMPORT FOREIGN SCHEMA」および「CREATE FOREIGN TABLE」をご参照ください。
このトピックでは、CREATE EXTERNAL DATABASE を例として使用します。 SQL コマンドは次のとおりです。
CREATE EXTERNAL DATABASE ext_database_mc WITH
metastore_type 'maxcompute'
mc_project 'mc_3_layer_project'
comment 'mc three layer project';外部データベース内のすべてのスキーマをクエリします。
SELECT * FROM hologres.hg_external_schemas('ext_database_mc');外部データベースのデフォルトスキーマ内のすべてのテーブルをクエリします。
SELECT * FROM hologres.hg_external_tables('ext_database_mc', 'default');
Hologres からの Delta テーブルのクエリ
MaxCompute Delta テーブルのデータをクエリするには、次の SQL コマンドを実行します。
SET hg_experimental_external_catalog_routing = 'odps:common_table';
SELECT * FROM ext_database_mc.mc_schema_name.mf_dt;