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

:Paimon 外部テーブル

最終更新日:Jun 22, 2026

MaxCompute では、Paimon 外部テーブルを作成して Object Storage Service (OSS) に保存されている Paimon テーブルディレクトリとのマッピング関係を確立し、そのデータにアクセスできます。 本書では、Paimon 外部テーブルを作成し、MaxCompute 経由で Paimon 外部テーブルにアクセスする方法について説明します。

背景情報

Apache Paimon は、ストリーミングとバッチを統合したレイクストレージフォーマットであり、高スループットの書き込みと低レイテンシーのクエリ能力を備えています。Realtime Compute for Apache FlinkE-MapReduce の一般的なコンピューティングエンジン (Spark、Hive、Trino など) は、すべて Paimon と完全に統合されています。 Apache Paimon を利用することで、ストレージサービスである OSS 上に独自のデータレイクストレージサービスを迅速に構築し、MaxCompute に接続してデータレイク分析を実行できます。 Apache Paimon の詳細については、「Apache Paimon」をご参照ください。

前提条件

  • 現在操作を実行しているアカウントに、MaxCompute テーブルを作成する権限 (CreateTable) が付与されていること。

  • MaxCompute プロジェクトが作成済みであること。 詳細な操作手順については、「MaxCompute プロジェクトの作成」をご参照ください。

  • バケットと対応するファイルディレクトリが作成済みであること。 詳細な操作手順については、「バケットの作成」をご参照ください。

    説明

    MaxCompute は一部のリージョンにしかデプロイされていないため、クロスリージョンでのデータ接続に問題が発生する可能性があります。 そのため、バケットと MaxCompute プロジェクトのリージョンを同じにすることを推奨します。

  • Flink フルマネージドサービスを購入済みであること。詳細な操作手順については、「Realtime Compute for Apache Flink の有効化」をご参照ください。

注意事項

  • 現在、MaxCompute は Paimon 外部テーブルに対する読み取り操作のみをサポートしており、書き込みや、Paimon テーブル構造の変更に自動的に追従する操作などはサポートしていません。

  • 現在、Paimon は Schema operations が有効になっている MaxCompute プロジェクトをサポートしていません。

  • Paimon 外部テーブルは cluster 属性をサポートしていません。

  • Paimon 外部テーブルは、過去バージョンのデータをクエリするなどの機能をサポートしていません。

Paimon 外部テーブル作成のコマンド構文

MaxCompute で 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 外部テーブルがパーティションテーブルの場合、パーティションデータをインポートする操作を別途実行する必要があります。 コマンドの詳細については、「ORC 外部テーブル」をご参照ください。

  • 方法 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

必須

作成する Paimon 外部テーブルの名前。

テーブル名では大文字と小文字が区別されません。 外部テーブルをクエリする際に、大文字と小文字を区別する必要はなく、強制的な大文字/小文字変換はサポートされていません。

col_name

必須

Paimon 外部テーブルの列名。

Paimon データを読み取るシナリオでは、作成された Paimon 外部テーブルの構造が Paimon データファイルの構造と一致している必要があります。一致していない場合、Paimon データの読み取りに失敗します。

data_type

必須

Paimon 外部テーブルの列のデータ型。

Paimon データを読み取るシナリオでは、作成された Paimon 外部テーブルの各列のデータ型が Paimon データファイルの各列のデータ型と一致している必要があります。一致していない場合、Paimon データの読み取りに失敗します。

odps.properties.rolearn

必須

RAM のロール (OSS へのアクセス権限を持つ) の ARN を指定します。

RAM コンソールの「ロールの詳細」から取得できます。

oss_location

必須

データファイルが配置されている OSS パスです。フォーマットはoss://<oss_endpoint>/<バケット名>/<OSS ディレクトリ名>/です。MaxCompute は、デフォルトでこのパス配下にあるすべてのデータファイルを読み取ります。

  • oss_endpoint:OSS アクセスドメイン名情報。 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: Flink でのデータ準備

Paimon Catalog と Paimon テーブルを作成し、テーブルにデータを挿入します。参考となる操作手順は次のとおりです。 Flink に Paimon テーブルとデータが既にある場合は、このステップをスキップできます。

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

  2. Paimon テーブルを作成します。 詳細な操作手順については、「テーブルの管理」をご参照ください。

    1. [メタデータ管理] ページで、作成した Paimon Catalog 配下の [default] を選択し、[テーブルの作成] をクリックします。

    2. [テーブルの追加] ダイアログボックスで、[Apache Paimon] コネクタを選択し、次のステートメントを入力して [OK] をクリックします。 本書では、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 ジョブの作成と実行の詳細については、「ジョブ開発の概要」をご参照ください。

      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 ジョブがストリーミングジョブ (例えば INSERT INTO ... VALUES ... ステートメントを実行する場合) である場合は、[ジョブの運用保守] ページで Execution Parameters を編集し、その他の設定execution.checkpointing.checkpoints-after-tasks-finish.enabled: true を設定する必要があります。 ジョブの実行パラメーターを設定する方法の詳細については、「ジョブデプロイの設定」をご参照ください。

ステップ 2: MaxCompute プロジェクトへの Paimon プラグインのアップロード

次のいずれかの方法で、作成済みの MaxCompute プロジェクトに Paimon プラグインをアップロードできます。

MaxCompute クライアントの使用

クライアント (odpscmd) 経由で作成済みの MaxCompute プロジェクトにアクセスし、次のコードを実行して paimon_maxcompute_connector.jar を MaxCompute プロジェクトにアップロードします。

ADD JAR <path_to_paimon_maxcompute_connector.jar>;

DataWorks の使用

  1. DataWorks コンソールにログインし、左側メニューで [ワークスペース] を選択し、対象のワークスペースの [操作] 列にある [クイックアクセス] > [データ開発] をクリックします。

  2. データ開発 ページで、[新規作成] ボタンをクリックし、[リソースの新規作成] > [JAR] を選択します。

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

    ここで、[リソースタイプ] には [JAR] を選択し、[ODPSリソースとしてアップロード] にチェックを入れます。

  4. リソースの作成が完了したら、リソース編集ページでツールバーの image.png アイコンをクリックし、リソースをスケジューリング開発サーバーにサブミットします。

ステップ 3: MaxCompute での Paimon 外部テーブルの作成

odpscmd を使用して MaxCompute に接続するか、MaxCompute SQL を実行できる他のツールを使用して、MaxCompute 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 での Paimon 外部テーブルの読み取り

  1. ローカルクライアント (odpscmd) を使用するか、MaxCompute SQL を実行できる他のツールを使用して、次のコマンドを実行します。

    SET odps.sql.common.table.planner.ext.hive.bridge = true;
    SET odps.sql.hive.compatible = true;
  2. 次のコマンドを実行して、MaxCompute Paimon 外部テーブル oss_extable_paimon_1pt をクエリします。

    SELECT * FROM oss_extable_paimon_1pt;

    実行結果の例は次のとおりです。

    +------------+------------+------------+
    | id         | data       | dt         |
    +------------+------------+------------+
    | 1          | AAA        | 2023-04-21 |
    | 2          | BBB        | 2023-04-21 |
    | 1          | CCC        | 2023-04-22 |
    | 2          | DDD        | 2023-04-22 |
    +------------+------------+------------+
    説明

    実行結果にパーティション情報が表示されない場合は、次のコマンドを実行してパーティション情報を追加してください。

    msck repair table oss_extable_paimon_1pt add partitions;

関連ドキュメント

また、Flink でカスタム Catalog を使用して MaxCompute Paimon 外部テーブルを作成し、データを書き込んだ後、MaxCompute 経由で Paimon データをクエリして消費することもできます。詳細については、「Flink に基づく MaxCompute Paimon 外部テーブルの作成」をご参照ください。