すべてのプロダクト
Search
ドキュメントセンター

:Apache Paimon外部テーブル

最終更新日:Jan 08, 2025

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ディレクトリは、oss://<oss_endpoint>/<バケット名>/<OSSディレクトリ名>/ 形式です。 MaxComputeは、指定したOSSディレクトリ内のすべてのファイルからデータを自動的に読み取ります。

  • oss_endpoint: OSSエンドポイント。 インターネットトラフィックによって発生する追加料金を防ぐには、OSSの内部エンドポイントを使用する必要があります。 例: oss:// oss-cn-beijing-internal.aliyuncs.com/xxx OSSの内部エンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

    説明

    データファイルを保存するためのOSSは、MaxComputeプロジェクトと同じリージョンにデプロイすることを推奨します。 MaxComputeは特定のリージョンにのみデプロイできます。 したがって、クロスリージョンデータ接続の問題が発生する可能性があります。

  • バケット名: OSSバケットの名前。 バケット名の表示方法の詳細については、「バケットの一覧表示」をご参照ください。

  • ディレクトリ名: OSSディレクトリの名前。 ディレクトリ名にファイル名を含める必要はありません。 例:

    oss://oss-cn-shanghai-internal.aliyuncs.com/oss-mc-test/Demo1/

手順

ステップ1: Realtime Compute for Apache Flinkでデータを準備する

Apache PaimonカタログとApache Paimonテーブルを作成し、テーブルにデータを挿入します。 このセクションでは、手順について説明します。 Realtime Compute for Apache FlinkでApache Paimonテーブルとデータを使用できる場合は、この手順をスキップしてください。

  1. Realtime Compute for Apache Flinkコンソールにログインし、Apache Paimonカタログを作成します。 詳細については、「Apache Paimonカタログの作成」をご参照ください。

  2. Apache Paimonテーブルを作成します。 詳細については、「Apache Paimonカタログの管理」をご参照ください。

    1. フルマネージドFlinkのコンソールの左側のナビゲーションウィンドウで、[カタログ] をクリックします。 [カタログ] ペインで、作成したApache Paimonカタログを見つけ、[デフォルト] データベースをクリックします。 次の図に示すように、表示されるページで [テーブルの作成] をクリックします。

      image.png

    2. [テーブルの作成] ダイアログボックスの [組み込み] タブで、[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);
    3. [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コンソールの使用

  1. DataWorksコンソールにログインします。 左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、目的のワークスペースを見つけ、[操作] 列の [ショートカット]> [データ開発] を選択します。

  2. DataStudioページで、[作成] をクリックし、[リソースの作成]> [JAR] を選択します。

  3. [リソースの作成] ダイアログボックスでパラメーターを設定し、paimon_maxcompute_connector.jarパッケージをアップロードし、[作成] をクリックします。 リソースの作成方法の詳細については、「手順1: リソースの作成または既存のリソースのアップロード」をご参照ください。

    image.png

  4. リソースが作成されたら、リソースの構成タブのツールバーのimage.pngアイコンをクリックして、リソースを開発環境にコミットします。

手順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外部テーブルからデータを読み取る

  1. MaxComputeクライアント (odpscmd) またはMaxCompute SQLを実行できる他のツールで次のコマンドを実行します。

    SET odps.sql.common.table.planner.ext.hive.bridge = true;
    SET odps.sql.hive.compatible = true;
  2. 次のコマンドを実行して、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外部テーブルの作成」をご参照ください。