MaxComputeを使用すると、Apache Paimon外部テーブルを作成し、その外部テーブルとObject Storage Service (OSS) に格納されているApache Paimonテーブルのディレクトリとの間のマッピングを確立できます。 その後、Apache Paimon外部テーブルを使用して、OSSに保存されているApache Paimonテーブルのデータにアクセスできます。 このトピックでは、MaxComputeを使用してApache Paimon外部テーブルを作成し、Apache Paimon外部テーブルにアクセスする方法について説明します。
背景情報
Apache Paimonは、ストリーミングとバッチ処理を統合するためのレイクストレージフォーマットです。 Apache Paimonは、高スループットの書き込みと低レイテンシーのクエリをサポートしています。 Alibaba Cloud Realtime compute for Apache FlinkのSpark、Hive、Trino、E-MapReduceなどの一般的なコンピューティングエンジンは、Apache Paimonとシームレスに統合されています。 Apache Paimonは、OSS上に独自のデータレイクストレージサービスをすばやく構築し、そのサービスをMaxComputeに接続してデータレイク分析を実装するのに役立ちます。 Apache Paimonの詳細については、「Apache Paimon」をご参照ください。
前提条件
操作の実行に使用するAlibaba Cloudアカウントには、MaxComputeテーブルを作成するためのCreateTable権限があります。 テーブル権限の詳細については、「MaxCompute権限」をご参照ください。
MaxComputeプロジェクトが作成されます。 詳細については、「MaxComputeプロジェクトの作成」をご参照ください。
OSSバケットと関連するディレクトリが作成されます。 詳細は、「バケットの作成」をご参照ください。
説明MaxComputeは特定のリージョンにのみデプロイされます。 クロスリージョンデータ接続の問題を防ぐために、MaxComputeプロジェクトと同じリージョンでバケットを使用することを推奨します。
フルマネージドFlinkが有効化されています。 詳細については、「Realtime Compute For Apache Flinkの有効化」をご参照ください。
使用上の注意
MaxComputeは、Apache Paimon外部テーブルからのみデータを読み取ることができますが、Apache Paimon外部テーブルにデータを書き込んだり、Apache Paimon外部テーブルのスキーマ変更を自動的に同期したりすることはできません。
Apache Paimonは、スキーマ機能が有効になっているMaxComputeプロジェクトをサポートしていません。
Apache Paimon外部テーブルは、クラスタリング属性をサポートしていません。
Apache Paimon外部テーブルは、履歴バージョンのデータのクエリやバックトラックなどの機能をサポートしていません。
構文
次のサンプルコードは、MaxComputeでApache Paimon外部テーブルを作成するための構文を示しています。
CREATE EXTERNAL TABLE [if NOT EXISTS] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[partitioned BY (<col_name> <data_type>, ...)]
stored BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole'
)
location '<oss_location>'
USING 'paimon_maxcompute_connector.jar';作成するPaimon外部テーブルがパーティションテーブルの場合、追加の操作を実行してパーティションデータをインポートする必要があります。 詳細については、「OSS外部テーブルの作成」をご参照ください。
方法1 (推奨): OSSディレクトリ構造を自動的に解析して、パーティションを識別し、パーティション情報をOSS外部テーブルに追加します。
msck repair TABLE <mc_oss_extable_name> ADD partitions;方法2: 次のコマンドを手動で実行して、パーティション情報をOSS外部テーブルに追加します。
ALTER TABLE <mc_oss_extable_name> ADD PARTITION (<col_name>= <col_value>);
次の表に、上記のコードのパラメーターを示します。
パラメーター | 必須 / 任意 | 説明 |
mc_oss_extable_name | 可 | 作成するApache Paimon外部テーブルの名前。 テーブル名は大文字と小文字を区別しません。 外部テーブルをクエリする場合、テーブル名は大文字と小文字に区別されず、強制大文字と小文字の変換はサポートされません。 |
col_name | 可 | Apache Paimon外部テーブルの列の名前。 Apache Paimonテーブルからデータを読み取るには、作成されたApache Paimon外部テーブルのスキーマがApache Paimonテーブルのスキーマと同じであることを確認する必要があります。 そうでない場合、データ読み取りは失敗します。 |
data_type | 可 | Apache Paimon外部テーブルの列データ型。 Apache Paimonテーブルからデータを読み取るには、作成されたApache Paimon外部テーブルの列データ型がApache Paimonテーブルの列データ型と同じであることを確認する必要があります。 そうでない場合、データ読み取りは失敗します。 |
odps.properties.rolearn | 可 | OSSへのアクセス権限が付与されているRAMロールのAlibaba Cloud Resource Name (ARN) 。 ARNは、RAM (Resource Access Management) コンソールのロールの詳細ページから取得できます。 |
oss_location | 可 | データファイルが保存されるOSSディレクトリ。 OSSディレクトリは、
|
手順
ステップ1: Realtime Compute for Apache Flinkでデータを準備する
Apache PaimonカタログとApache Paimonテーブルを作成し、テーブルにデータを挿入します。 このセクションでは、手順について説明します。 Realtime Compute for Apache FlinkでApache Paimonテーブルとデータを使用できる場合は、この手順をスキップしてください。
Realtime Compute for Apache Flinkコンソールにログインし、Apache Paimonカタログを作成します。 詳細については、「Apache Paimonカタログの作成」をご参照ください。
Apache Paimonテーブルを作成します。 詳細については、「Apache Paimonカタログの管理」をご参照ください。
フルマネージドFlinkのコンソールの左側のナビゲーションウィンドウで、[カタログ] をクリックします。 [カタログ] ペインで、作成したApache Paimonカタログを見つけ、[デフォルト] データベースをクリックします。 次の図に示すように、表示されるページで [テーブルの作成] をクリックします。

[テーブルの作成] ダイアログボックスの [組み込み] タブで、[Apache Paimon] をクリックし、[次へ] をクリックします。 [テーブルの作成] ステップで、次のテーブル作成ステートメントを入力し、[確認] をクリックします。 この例では、test_tblという名前のテーブルが作成されます。
CREATE TABLE `catalogname`.`default`.test_tbl ( dt STRING, id BIGINT, data STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt);[SQLエディター] ページで、次のステートメントを含むSQLドラフトを作成し、ドラフトをデプロイして、ドラフトのデプロイを実行します。 SQLドラフトの開発と実行方法の詳細については、「SQLドラフトの開発」をご参照ください。
INSERT INTO `catalogname`.`default`.test_tbl VALUES ('2023-04-21', 1, 'AAA'), ('2023-04-21', 2, 'BBB'), ('2023-04-22', 1, 'CCC'), ('2023-04-22', 2, 'DDD');説明SQLドラフトのエンジンバージョンがvvr-8.0.1-flink-1.17以降であることを確認してください。
SQLデプロイメントが制限付きストリーミングデプロイメントの場合は、[デプロイメント] ページに移動し、[設定] タブの [パラメーター] セクションの右上隅にある [編集] をクリックし、[その他の設定] フィールドに
execution.checkpointing.checkpoints-after-tasks-finish.enabled: trueを追加します。 たとえば、INSERT INTO... 価値...文はSQLデプロイメントに含まれており、デプロイメントは制限付きストリーミングデプロイメントです。 デプロイメントのランタイムパラメーターを設定する方法の詳細については、「デプロイメントの設定」をご参照ください。
手順2: Apache PaimonプラグインをMaxComputeプロジェクトにアップロードする
次のいずれかの方法を使用して、Apache Paimon plug-inをMaxComputeプロジェクトにアップロードできます。
MaxComputeクライアントの使用
MaxComputeクライアントでMaxComputeプロジェクトにアクセスし、次のコードを実行してpaimon_maxcompute_connector.jarパッケージをMaxComputeプロジェクトにアップロードします。
ADD JAR <path_to_paimon_maxcompute_connector.jar>;DataWorksコンソールの使用
DataWorksコンソールにログインします。 左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、目的のワークスペースを見つけ、[操作] 列の [ショートカット]> [データ開発] を選択します。
DataStudioページで、[作成] をクリックし、[リソースの作成]> [JAR] を選択します。
[リソースの作成] ダイアログボックスでパラメーターを設定し、
paimon_maxcompute_connector.jarパッケージをアップロードし、[作成] をクリックします。 リソースの作成方法の詳細については、「手順1: リソースの作成または既存のリソースのアップロード」をご参照ください。
リソースが作成されたら、リソースの構成タブのツールバーの
アイコンをクリックして、リソースを開発環境にコミットします。
手順3: MaxComputeクライアント (odpscmd) またはMaxCompute SQLステートメントを実行できるツールを使用してApache Paimon外部テーブルを作成する
MaxComputeクライアント (odpscmd) 上に、またはMaxCompute SQL文を実行できるツールを使用して、Apache Paimon外部テーブルを作成します。 この例では、oss_extable_paimon_1ptという名前の外部テーブルが作成されています。
CREATE EXTERNAL TABLE oss_extable_paimon_1pt
(
id BIGINT,
data STRING
)
PARTITIONED BY (dt STRING )
stored BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
'odps.properties.rolearn'='acs:ram::124*********:role/aliyunodpsdefaultrole'
)
location 'oss://oss-cn-beijing-internal.aliyuncs.com/paimon_flink/test_db_y.db/test_tbl/'
USING 'paimon_maxcompute_connector.jar'
;手順4: MaxComputeクライアント (odpscmd) またはMaxCompute SQL文を実行できるツールを使用して、Apache Paimon外部テーブルからデータを読み取る
MaxComputeクライアント (odpscmd) またはMaxCompute SQLを実行できる他のツールで次のコマンドを実行します。
SET odps.sql.common.table.planner.ext.hive.bridge = true; SET odps.sql.hive.compatible = true;次のコマンドを実行して、
oss_extable_paimon_1ptテーブルからデータを照会します。SELECT * FROM oss_extable_paimon_1pt;次の応答が返されます。
+------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | AAA | 2023-04-21 | | 2 | BBB | 2023-04-21 | +------------+------------+------------+説明コマンド出力にパーティション情報が表示されない場合は、次のコマンドを実行してパーティション情報を追加できます。
msck repair table oss_extable_paimon_1pt add partitions;
関連ドキュメント
Flinkのカスタムカタログを使用して、MaxCompute Apache Paimon外部テーブルを作成することもできます。 データがテーブルに書き込まれた後、MaxComputeを使用してテーブル内のデータをクエリして使用できます。 詳細については、「Realtime Compute For Apache Flinkを使用したApache Paimon外部テーブルの作成」をご参照ください。