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

Data Lake Formation:MaxCompute からの DLF へのアクセス

最終更新日:Mar 27, 2026

MaxCompute の外部プロジェクトは Data Lake Formation (DLF) のカタログにマッピングされます。これにより、MaxCompute は DLF が管理する Object Storage Service (OSS) に保存されている Paimon フォーマットのテーブルに対して、リアルタイムでの読み取り/書き込みアクセスが可能になります。権限管理は DLF に委任され、カタログレベルのマッピングにより、共有データレイクのメタデータ上で複数のエンジンが連携できます。

Paimon_DLF 外部プロジェクトは現在、招待プレビュー段階です。

制限事項

  • DLF が管理する OSS に保存されている Paimon フォーマットのテーブルのみがサポートされます。

  • 動的バケットテーブルへの書き込みはサポートされていません。

  • クロスパーティションテーブルへの書き込みはサポートされていません。

権限の仕組み

MaxCompute から Paimon_DLF データにアクセスするには、2 つの独立した権限レイヤーを満たす必要があります。両方を設定する必要があり、どちらか一方が欠けているとアクセスエラーが発生します。

レイヤー 制御対象 管理場所
コントロールプレーン コンソール操作 — 外部プロジェクトの作成と DLF カタログのアタッチ RAM コンソール
データプレーン SQL 操作 — Paimon テーブルの読み取りと書き込み、アタッチされた DLF カタログ内のスキーマとテーブルの管理 DLF コンソール

MaxCompute は、データの読み取りまたは書き込み時に、現在のタスクエグゼキュータの ID を DLF に渡します。その後、各システムは独立して独自の権限スコープを適用します。

統合の設定

ステップ 操作 目的
1 権限の付与 クラウドリソースへのアクセスを承認し、DLF をアクティブ化し、サービスリンクロールを作成する
2 Paimon_DLF 外部データソースの作成 MaxCompute と DLF 間の接続を定義する
3 外部プロジェクトの作成 DLF カタログを MaxCompute プロジェクトにマッピングする
4 SQL を使用したデータのクエリと書き込み DLF が管理する OSS 内の Paimon テーブルの読み取りと書き込み

ステップ 1:権限の付与

次の表に、このステップの各タスクを実行するアカウントの種類を示します。

タスク 実行者
RAM ユーザーへの RAM ポリシーの付与 Alibaba Cloud アカウントのオーナー
DLF コンソールでのクラウドリソースへのアクセスの承認 Alibaba Cloud アカウントのオーナー
DLF のアクティブ化 Alibaba Cloud アカウントのオーナー
MaxCompute サービスリンクロールの作成 Alibaba Cloud アカウントのオーナー
RAM ユーザーへの DLF データ権限の付与 データレイク管理者 (DLF コンソール)

RAM ユーザーへの RAM ポリシーの付与

Resource Access Management (RAM) ユーザーを使用している場合は、次のポリシーをアタッチします。手順については、「RAM ユーザーに権限を付与する」をご参照ください。

ポリシー 対象
AliyunRAMFullAccess RAM ユーザーがこの権限を持っていない場合、Alibaba Cloud アカウントのオーナーが付与する必要があります
AliyunMaxComputeFullAccess 外部データソースと外部プロジェクトの作成
AliyunDLFReadOnlyAccess 外部プロジェクトの作成 — DLF カタログに対する List 権限を付与します

クラウドリソースへのアクセスの承認と DLF のアクティブ化

  1. DLF コンソールにログインし、左上のコーナーでリージョンを選択します。

  2. クラウドリソースへのアクセス権限が付与されました。 の右側にある [権限付与] をクリックします。

  3. DLF がアクティブ化されました。 の右側にある [アクティブ化] をクリックします。

    MaxCompute と DLF は同じリージョンにある必要があります。

MaxCompute のサービスリンクロールの作成

MaxCompute は AliyunServiceRoleForMaxComputeLakehouse サービスリンクロールを使用して DLF データにアクセスします。このロールを RAM コンソールで作成します:

  1. RAM コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アイデンティティ] > [ロール] を選択します。

  3. [ロール] ページで、[ロールの作成] をクリックします。

  4. 右上隅にある [サービスリンクロールの作成] をクリックします。

  5. [サービスの選択]AliyunServiceRoleForMaxComputeLakehouse に設定し、[サービスリンクロールの作成] をクリックします。ロールが既に存在するというメッセージが表示された場合は、すでに承認済みです。これ以上の操作は必要ありません。

RAM ユーザーへの DLF データ権限の付与

データプレーンの権限は DLF コンソールで管理されます。DLF コンソールにログインし、Paimon テーブルの読み取りまたは書き込みが必要な RAM ユーザーに権限を付与します。

ステップ 2:Paimon_DLF 外部データソースの作成

  1. MaxCompute コンソールにログインし、リージョンを選択します。

  2. 左側のナビゲーションウィンドウで、[設定の管理] > [外部データソース] を選択します。

  3. [外部データソースの作成] をクリックします。

  4. 次のパラメーターを設定します:

    パラメーター 必須 説明
    外部データソースタイプ 必須 [Paimon_DLF]
    外部データソース名 必須 先頭は英字である必要があります。小文字の英字、アンダースコア、数字のみ使用できます。最大 128 文字です。例:paimon_dlf
    [説明] 任意 カスタムの説明
    リージョン 必須 現在のリージョンがデフォルトで設定されます
    [認証と権限付与] 必須 デフォルトで [Alibaba Cloud RAM ロール]
    サービスにリンクされたロール 必須 自動生成
    エンドポイント 必須 自動生成されます。中国 (杭州) リージョンの場合:cn-hangzhou-intranet.dlf.aliyuncs.com
    [外部サーバーの補足プロパティ] 任意 外部データソースの追加属性
  5. [OK] をクリックします。

  6. [外部データソース] ページで、新しいデータソースを見つけ、[操作] 列の [詳細] をクリックして構成を確認します。

ステップ 3:外部プロジェクトの作成

  1. MaxCompute コンソールにログインし、リージョンを選択します。

  2. 左側のナビゲーションウィンドウで、[設定の管理] > [プロジェクト] を選択します。

  3. [外部プロジェクト] タブで、[プロジェクトの作成] をクリックします。

  4. 次のパラメーターを設定し、[OK] をクリックします:

    パラメーター 必須 説明
    プロジェクトタイプ 必須 デフォルトで [外部プロジェクト]
    リージョン 必須 現在のリージョンがデフォルトで設定され、変更はできません
    [プロジェクト名 (グローバルに一意)] 必須 先頭は英字である必要があります。英字、数字、アンダースコアのみ使用できます。3~28 文字です
    MaxCompute 外部サーバータイプ 任意 デフォルトで [Paimon_DLF]
    MaxCompute 外部サーバー 任意 [既存のものを使用] を選択して以前に作成した外部データソースを選択するか、[外部サーバーの作成] を選択して新しいものを作成します
    MaxCompute 外部サーバー名 必須 既存のデータソースから選択するか、新しいデータソースの名前を入力します
    Data Catalog 必須 アタッチする DLF データカタログ
    [課金方法] 必須 [サブスクリプション] または [従量課金]
    デフォルト クォータ 必須 既存のクォータを選択します
    [説明] 任意 カスタムの説明

ステップ 4:SQL を使用したデータのクエリと書き込み

接続ツールを選択して外部プロジェクトにログインし、次の SQL コマンドを使用します。

スキーマの一覧表示

-- セッションレベルでスキーマ構文を有効化します。
SET odps.namespace.schema=true;
SHOW schemas;

-- 出力例:
-- ID = 20250919****am4qb
-- default
-- system
-- OK

スキーマ内のテーブルの一覧表示

-- <schema_name> を上記の出力に表示されたスキーマ名に置き換えます。
USE schema <schema_name>;
SHOW tables;

-- 出力例:
-- ID = 20250919****am4qb
-- acs:ram::<uid>:root  emp
-- OK

スキーマの作成

-- <schema_name> をご自身のスキーマ名に置き換えます。
CREATE schema <schema_name>;

テーブルの作成とデータの挿入

TIMESTAMP データを Paimon ソーステーブルに書き込む際、データはその精度に基づいて切り捨てられます。精度 0~3 は小数点以下 3 桁に、精度 4~6 は小数点以下 6 桁に、精度 7~9 は小数点以下 9 桁に切り捨てられます。

コマンドフォーマット:

-- テーブルを作成します。
CREATE TABLE [IF NOT EXISTS] <table_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
;

-- データを挿入します。
INSERT {INTO|OVERWRITE} TABLE <table_name> [PARTITION (<pt_spec>)] [(<col_name> [,<col_name> ...])]
<select_statement>
FROM <from_statement>

例 — テーブルを作成して行を挿入する:

CREATE TABLE schema_table(id int, name string);

INSERT INTO schema_table VALUES (101, 'Zhang San'), (102, 'Li Si');

-- データを確認します。
SELECT * FROM schema_table;

-- 結果:
-- +------------+------------+
-- | id         | name       |
-- +------------+------------+
-- | 101        | Zhang San  |
-- | 102        | Li Si      |
-- +------------+------------+
RAM ユーザーとしてログインしている場合、テーブルの作成とデータの挿入には DLF カタログの権限が必要です。詳細については、「データ権限管理」をご参照ください。

デフォルトスキーマへの読み取りと書き込み

USE スキーマ default;
SHOW TABLES;

-- サンプル出力:
-- ID = 20250919*******yg5
-- acs:ram::<uid>:root  emp
-- acs:ram::<uid>:root  emp_detail
-- acs:ram::<uid>:root  test_table
-- OK

-- データを読み取ります。
SELECT * FROM test_table;

-- 結果:
-- +------------+------------+
-- | id         | name       |
-- +------------+------------+
-- | 101        | Zhang San  |
-- | 102        | Li Si      |
-- +------------+------------+

-- データを書き込み、確認します。
INSERT INTO test_table VALUES (103, 'Wang Wu');

SELECT * FROM test_table;

-- 結果:
-- +------------+------------+
-- | id         | name       |
-- +------------+------------+
-- | 101        | Zhang San  |
-- | 102        | Li Si      |
-- | 103        | Wang Wu    |
-- +------------+------------+

トラブルシューティング

外部プロジェクト作成時の "You are not authorized to perform this action" エラー

image

RAM ユーザーに必要な権限がありません。以下を確認してください:

  1. AliyunMaxComputeFullAccess が RAM ユーザーにアタッチされていることを確認してください。詳細については、ステップ 1 をご参照ください。

  2. DLF の権限が付与されていることを確認してください。Paimon_DLF 外部プロジェクトを作成するには DLF カタログを選択する必要があり、そのためには DLF へのアクセス権限が必要です。詳細については、ステップ 1 をご参照ください。

「禁止されています: ユーザー acs:ram::<uid>:user/** には DATABASE default 上の LIST 特権がありません」を実行したときに SHOW TABLES

RAM ユーザーに DLF カタログに対するデータプレーンの権限がありません。

  1. DLF コンソールにログインします。左側のナビゲーションウィンドウで、[システムとセキュリティ] をクリックします。[アクセス制御] タブでページを更新し、RAM ユーザーが表示されるか確認します。

  2. ユーザーが存在する場合、[ロール] をクリックし、RAM ユーザーに必要な権限を付与します。