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

OpenLake:(招待制プレビュー)外部プロジェクトを使用して、DLF ベースのデータレイク内の Paimon データを読み書きする

最終更新日:Feb 02, 2026

この Topic では、Flink を使用して Data Lake Formation (DLF) で Paimon カタログを作成し、MySQL Change Data Capture (CDC) データを読み取り、そのデータを DLF に書き込む方法について説明します。その後、MaxCompute 外部プロジェクトを使用してデータレイクで統合クエリと分析を実行し、結果を DLF に書き戻すことができます。この Topic は、DLF の旧バージョンとは異なる、DLF の新バージョンに適用されます。DLF の新バージョンの詳細については、「Data Lake Formation」をご参照ください。

前提条件

操作手順

ステップ 1:ソースデータの準備

  • すでに MySQL のテストデータがある場合は、このステップをスキップできます。

  • このステップでは、業務システムからのリアルタイムデータ更新をシミュレートします。データは Flink を使用して Paimon フォーマットでデータレイクに書き込まれます。

  1. ApsaraDB RDS for MySQL コンソール

  2. 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。

  3. インスタンスリストページで、ターゲットインスタンスの [インスタンス ID/名前] をクリックしてインスタンス詳細ページを開きます。

  4. 左側のナビゲーションウィンドウで、[データベース] をクリックします。

  5. [データベースの作成] をクリックします。次のパラメーターを設定します。

    パラメーター

    必須

    説明

    データベース名

    必須

    • 名前の長さは 2~64 文字である必要があります。

    • 先頭は英字、末尾は英字または数字である必要があります。

    • 小文字の英字、数字、アンダースコア (_)、ハイフン (-) を含めることができます。

    • データベース名はインスタンス内で一意である必要があります。

    • データベース名にハイフン (-) が含まれている場合、作成されたデータベースフォルダの名前のハイフン (-) は @002d に置き換えられます。

    dlf25_paimon

    サポートされる文字セット

    必須

    必要に応じて文字セットを選択します。

    utf8

    権限付与

    任意

    • このデータベースにアクセスする必要があるアカウントを選択します。このパラメーターを空のままにして、データベース作成後にアカウントをアタッチすることもできます。

    • ここには標準アカウントのみが表示されます。権限を持つアカウントはすべてのデータベースに対するすべての権限を持っており、権限付与は不要です。

    Default

    説明

    任意

    将来の管理のためにデータベースに関する備考を入力します。備考は最大 256 文字です。

    Create a test database for the external project DLF 2.5.

  6. [データベースにログオン] をクリックします。左側のナビゲーションウィンドウで、[データベースインスタンス] を選択します。作成したデータベースをダブルクリックします。右側に表示される [SQL コンソール] ページで、次のステートメントを実行してテストテーブルを作成し、テストデータを挿入します。

    インスタンスを展開した後に目的のデータベースが見つからない場合、原因は次のいずれかである可能性があります:

    • ログインアカウントにターゲットデータベースへのアクセス権限がありません:RDS インスタンスの [アカウント] ページで、アカウントの権限を変更するか、ログインデータベースアカウントを変更することができます。

    • メタデータが同期されていない:インスタンスの上にマウスポインターを合わせます。インスタンス名の横にある image アイコンをクリックして、データベースリストを更新します。

    CREATE TABLE emp (
        empno    INT PRIMARY KEY,
        ename    VARCHAR(20),
        job      VARCHAR(20),
        mgr      INT,
        hiredate DATE,
        sal      DECIMAL(10,2),
        comm     DECIMAL(10,2),
        deptno   INT
    );
    
    INSERT INTO emp VALUES
    (7369,'SMITH','CLERK',7902,'2020-12-17', 800.00,NULL,20),
    (7499,'ALLEN','SALESMAN',7698,'2021-02-20',1600.00,300.00,30),
    (7521,'WARD','SALESMAN',7698,'2021-02-22',1250.00,500.00,30),
    (7566,'JONES','MANAGER',7839,'2021-04-02',2975.00,NULL,20),
    (7654,'MARTIN','SALESMAN',7698,'2021-09-28',1250.00,1400.00,30),
    (7698,'BLAKE','MANAGER',7839,'2021-05-01',2850.00,NULL,30),
    (7782,'CLARK','MANAGER',7839,'2021-06-09',2450.00,NULL,10),
    (7788,'SCOTT','ANALYST',7566,'2021-12-09',3000.00,NULL,20),
    (7839,'KING','PRESIDENT',NULL,'2021-11-17',5000.00,NULL,10),
    (7844,'TURNER','SALESMAN',7698,'2021-09-08',1500.00,0.00,30),
    (7876,'ADAMS','CLERK',7788,'2022-01-12',1100.00,NULL,20),
    (7900,'JAMES','CLERK',7698,'2021-12-03', 950.00,NULL,30),
    (7902,'FORD','ANALYST',7566,'2021-12-03',3000.00,NULL,20),
    (7934,'MILLER','CLERK',7782,'2022-01-23',1300.00,NULL,10),
    (8001,'DUKE','ENGINEER',7788,'2023-03-15',3500.00,NULL,20),
    (8002,'DANIEL','ENGINEER',7788,'2023-04-01',3400.00,NULL,20),
    (8003,'SANDRA','CONSULTANT',7698,'2023-05-10',2700.00,NULL,30),
    (8004,'KAREN','CLERK',7902,'2023-06-11',1200.00,NULL,20),
    (8005,'JOHN','MANAGER',7839,'2023-07-12',4000.00,NULL,10),
    (8006,'LISA','DESIGNER',7698,'2023-08-13',2200.00,NULL,30);
  7. テストテーブルのデータをクエリします。

    SELECT * FROM emp;

    次の結果が返されます:

    image

ステップ 2:DLF メタデータベースの準備

  1. Data Lake Formation (DLF) コンソールにログインし、左上隅でリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、Catalog List を選択します。

  3. 「カタログ」ページで、[カタログの作成] をクリックします。

  4. [Data Lake Formation (DLF)] ページで、次のパラメーターを入力し、[カタログの作成] をクリックします:

    パラメーター

    必須

    説明

    カタログ名

    必須

    カスタムのカタログ名。名前は英字で始まり、長さは 1~256 文字である必要があります。英字、数字、アンダースコア (_) を含めることができます。例:db_dlf25_oss

    説明

    任意

    カスタムの説明。

    ストレージタイプ

    必須

    標準。

    ストレージ冗長タイプ

    必須

    • ローカル冗長ストレージ:データは単一ゾーンに保存されます。データが保存されているゾーンが利用できなくなると、データにアクセスできなくなります。ゾーン冗長ストレージの使用を推奨します。

    • ゾーン冗長ストレージ:同一リージョン内のマルチゾーン冗長メカニズムです。単一ゾーンが利用できなくなっても、データは利用可能なままです。カタログ作成後、ストレージ冗長タイプをゾーン冗長からローカル冗長に変更することはできません。ゾーン冗長ストレージはローカル冗長ストレージよりも高いデータ可用性を提供しますが、コストが高くなります。高い可用性が必要なデータにはゾーン冗長ストレージを推奨します。

ステップ 3:Flink を使用した Paimon および MySQL カタログの作成

  1. Paimon カタログの作成

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

    2. 対象のワークスペース名をクリックします。左側のナビゲーションウィンドウで、[カタログ] を選択します。

    3. [カタログリスト] ページで、右側の [カタログの作成] をクリックします。[カタログの作成] ダイアログボックスで、Apache Paimon を選択し、[次へ] をクリックして、次のパラメーターを設定します。

      パラメーター

      必須

      説明

      metastore

      必須

      メタストアのタイプ。この例では、dlf を選択します。

      catalog name

      必須

      関連付けるバージョンの DLF カタログを選択します。DLF V2.5 を選択します。この例では、DLF で作成された db_dlf25_oss です。

  2. MySQL カタログの作成

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

    2. ホワイトリストに IP アドレスを追加します。

      1. 対象のワークスペースの [アクション] 列で、[詳細] をクリックします。

        [ワークスペース詳細] パネルで、vSwitch の [CIDR ブロック] をコピーします。

      2. ApsaraDB RDS for MySQL コンソール

        左側のナビゲーションウィンドウで、[インスタンス] をクリックします。

        「インスタンス一覧」ページで、対象のインスタンスの [インスタンス ID/名前] をクリックして、「インスタンス詳細」ページを開きます。

      3. 左側のナビゲーションウィンドウで、[ホワイトリストとセキュリティグループ] をクリックします。

        [ホワイトリスト設定] タブで、[変更] をクリックします。

      4. [ホワイトリストの編集] ダイアログボックスで、コピーしたネットワークセグメントを [IP アドレス] フィールドに追加し、[OK] をクリックします。

    3. Flink コンソールにログインし、左上隅でリージョンを選択します。

      目的のワークスペースの名前をクリックします。左側のナビゲーションウィンドウで、[カタログ] を選択します。

    4. 右側の [カタログリスト] で、[カタログを作成] をクリックします。[カタログを作成] ダイアログボックスで MySQL を選択し、[次へ] をクリックして、次のパラメーターを設定します:

      パラメーター

      必須

      説明

      catalog name

      必須

      MySQL カタログのカスタム名。例:mysql-catalog-dlf25

      hostname

      必須

      • MySQL データベースの IP アドレスまたはホスト名。

      • RDS MySQL コンソールにログインできます。 データベースインスタンスの詳細ページで、[データベース接続] をクリックすると、データベースの [内部エンドポイント][パブリックエンドポイント]、および [内部ポート] を表示できます。

      • VPC をまたいで、またはインターネット経由でアクセスする場合は、ネットワーク接続を確立する必要があります。詳細については、「ネットワーク接続」をご参照ください。

      port

      デフォルト

      サーバーへの接続に使用されるポート。デフォルト値は 3306 です。

      default database

      必須

      デフォルトのデータベース名。例:dlf25_paimon

      username

      必須

      MySQL データベースサーバーへの接続に使用されるユーザー名。RDS for MySQL コンソールにログインできます。インスタンス詳細ページで、[アカウント管理] をクリックしてユーザー名を表示します。

      password

      必須

      MySQL データベースサーバーへの接続に使用されるパスワード。RDS for MySQL コンソールにログインできます。インスタンス詳細ページで、[アカウント管理] をクリックしてパスワードを表示します。

ステップ 4:Flink を使用した MySQL データの読み取りと DLF の Paimon テーブルへの書き込み

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

  2. 対象のワークスペース名をクリックし、左側のナビゲーションウィンドウで [開発] > [ETL] を選択します。

  3. [下書き] タブで、image をクリックして新しいフォルダを作成します。

  4. フォルダを右クリックして、[新規空白ストリームドラフト]を選択します。[新規ドラフト] ダイアログボックスで、[名前]を入力し、[エンジンバージョン]を選択します。

  5. ファイルに次の SQL ステートメントを記述して実行します。実際の環境に基づいてコード内の名前を変更してください。

    CREATE TABLE IF NOT EXISTS `db_dlf25_oss`.`default`.`emp`
    WITH (
      'bucket' = '4',
      'changelog-producer' = 'input'
    ) AS TABLE `mysql-catalog-dlf25`.`dlf25_paimon`.`emp`;
    1. (任意) 右上隅にある [検証] をクリックして、ジョブの Flink SQL 文の構文を検証します。

    2. 右上隅にある [デプロイ] をクリックします。[ドラフトのデプロイ] ダイアログボックスで、[コメント][ラベル][デプロイ先] を指定し、[確認] をクリックします。

  6. 対象のワークスペース名をクリックします。左側のナビゲーションウィンドウで、[O&M] > [Deployments]を選択します。

  7. [デプロイメント] ページで、対象のジョブ名をクリックすると、その [設定] ページが開きます。

  8. 対象のジョブのデプロイメント詳細ページの右上隅で、[開始]をクリックし、[初期モード]を選択し、次に[開始]をクリックします。

  9. Paimon データのクエリ

    左側のナビゲーションウィンドウで、[開発] > [スクリプト] を選択します。

    [新規スクリプト] タブで、image をクリックして新しいクエリスクリプトを作成できます。

    SELECT * FROM `db_dlf25_oss`.`default`.`emp`;

    次の結果が返されます:

    image

  10. Data Lake Formation (DLF) コンソールにログインします。Catalog List > [カタログ] を選択し、データカタログをクリックしてデータベースに移動し、同期されたテーブルの詳細を表示します。

image

ステップ 5:MaxCompute での Paimon_DLF 外部データソースの作成

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

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

  3. 外部データソース ページで、外部データソースの作成 をクリックします。

  4. 外部データソースの追加 ダイアログボックスで、パラメーターを設定します。次の表にパラメーターを示します。

    パラメーター

    必須

    説明

    外部データソースタイプ

    必須

    [DLF+OSS] を選択します。

    外部データソース名

    必須

    カスタム名。命名規則は次のとおりです:

    • 名前は英字で始まり、小文字の英字、アンダースコア (_)、数字のみを含めることができます。

    • 名前の長さは 128 文字を超えることはできません。

    例:mysql_paimon_dlf25

    外部データソースの説明

    任意

    必要に応じて説明を入力します。

    地理

    必須

    デフォルト値は現在のリージョンです。

    DLF エンドポイント

    必須

    デフォルト値は現在のリージョンの DLF エンドポイントです。

    OSS エンドポイント

    必須

    デフォルト値は現在のリージョンの OSS エンドポイントです。

    RoleARN

    必須

    RAM ロールの Alibaba Cloud リソースネーム (ARN)。このロールには DLF と OSS の両方にアクセスする権限が必要です。

    1. Resource Access Management (RAM) コンソールにログインします。

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

    3. [基本情報] セクションで、[Amazon リソースネーム (ARN)] を確認できます。

    例:acs:ram::124****:role/aliyunodpsdefaultrole

    外部データソースの追加プロパティ

    任意

    外部データソースの特別な属性。指定すると、この外部データソースを使用するタスクは、定義された動作に従ってソースシステムにアクセスできます。

    説明

    サポートされているパラメーターについては、公式ドキュメントをご参照ください。プロダクトの進化に伴い、より多くのパラメーターがサポートされる予定です。

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

  6. 外部データソース ページで、対象のデータソースを見つけ、操作 列の 詳細 をクリックします。

ステップ 6:MaxCompute での Paimon_DLF 外部プロジェクトの作成

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

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

  3. External Project タブで、新しいプロジェクト をクリックします。

  4. 新しいアイテム ダイアログボックスで、パラメーターを設定し、[確認] をクリックしてプロジェクトを作成します。

    パラメーター

    必須

    説明

    プロジェクトタイプ

    必須

    デフォルト値は外部プロジェクトです。

    地理

    必須

    デフォルト値は現在のリージョンです。ここでは変更できません。

    プロジェクト名 (ネットワーク全体で一意)

    必須

    名前は英字で始まり、英字、数字、アンダースコア (_) を含み、長さは 3~28 文字である必要があります。

    MaxCompute外部データソース型

    任意

    デフォルト値は Paimon_DLF です。

    MaxCompute外部データソース

    任意

    • 既存の選択:作成済みの外部データソースのリストが表示されます。

    • 新しい外部データソース:新しい外部データソースを作成して使用します。

    MaxCompute外部データソース名

    必須

    • 既存のものを選択:ドロップダウンリストから作成済みの外部データソースの名前を選択します。

    • 外部データソースの作成:新しい外部データソースの名前が使用されます。

    認証と認可

    必須

    タスクエグゼキュータの ID。サービスリンクロールが存在しない場合は、このモードを使用する前に作成する必要があります。

    関連サービスの役割

    必須

    デフォルトで生成されます。

    エンドポイント

    必須

    デフォルトで生成されます。

    データディレクトリ

    必須

    DLF データカタログ。

    コンピューティングリソース支払いタイプ

    必須

    年と月 または ボリュームで支払う

    デフォルトクォータ

    必須

    既存のクォータを選択します。

    説明

    任意

    カスタムのプロジェクト説明。

ステップ 7:データの分析

  1. 接続ツールを使用して外部プロジェクトにログインします。

  2. 外部プロジェクト内のスキーマをリスト表示します。

    -- セッションレベルでスキーマ構文を有効にします。
    SET odps.namespace.schema=true;
    SHOW schemas;
    
    -- 次の結果が返されます。
    ID = 20250919****am4qb
    default
    system
    
    
    OK
  3. 外部プロジェクトのスキーマ内のテーブルをリスト表示します。

    USE schema default;
    SHOW tables;
    
    -- 次の結果が返されます。
    ID = 20250919****am4qb
    acs:ram::<uid>:root  emp
    
    
    OK
  4. DLF の Paimon テーブルからデータを読み取ります。

    SELECT * FROM emp;
    
    -- 次の結果が返されます。
    +------------+------------+------------+------------+------------+------------+------------+------------+
    | empno      | ename      | job        | mgr        | hiredate   | sal        | comm       | deptno     | 
    +------------+------------+------------+------------+------------+------------+------------+------------+
    | 7521       | WARD       | SALESMAN   | 7698       | 2021-02-22 | 1250       | 500        | 30         | 
    | 7844       | TURNER     | SALESMAN   | 7698       | 2021-09-08 | 1500       | 0          | 30         | 
    | 7876       | ADAMS      | CLERK      | 7788       | 2022-01-12 | 1100       | NULL       | 20         | 
    | 7900       | JAMES      | CLERK      | 7698       | 2021-12-03 | 950        | NULL       | 30         | 
    | 7934       | MILLER     | CLERK      | 7782       | 2022-01-23 | 1300       | NULL       | 10         | 
    | 8005       | JOHN       | MANAGER    | 7839       | 2023-07-12 | 4000       | NULL       | 10         | 
    | 7369       | SMITH      | CLERK      | 7902       | 2020-12-17 | 800        | NULL       | 20         | 
    | 7566       | JONES      | MANAGER    | 7839       | 2021-04-02 | 2975       | NULL       | 20         | 
    | 7654       | MARTIN     | SALESMAN   | 7698       | 2021-09-28 | 1250       | 1400       | 30         | 
    | 7698       | BLAKE      | MANAGER    | 7839       | 2021-05-01 | 2850       | NULL       | 30         | 
    | 7839       | KING       | PRESIDENT  | NULL       | 2021-11-17 | 5000       | NULL       | 10         | 
    | 8002       | DANIEL     | ENGINEER   | 7788       | 2023-04-01 | 3400       | NULL       | 20         | 
    | 8006       | LISA       | DESIGNER   | 7698       | 2023-08-13 | 2200       | NULL       | 30         | 
    | 7499       | ALLEN      | SALESMAN   | 7698       | 2021-02-20 | 1600       | 300        | 30         | 
    | 7782       | CLARK      | MANAGER    | 7839       | 2021-06-09 | 2450       | NULL       | 10         | 
    | 7788       | SCOTT      | ANALYST    | 7566       | 2021-12-09 | 3000       | NULL       | 20         | 
    | 7902       | FORD       | ANALYST    | 7566       | 2021-12-03 | 3000       | NULL       | 20         | 
    | 8001       | DUKE       | ENGINEER   | 7788       | 2023-03-15 | 3500       | NULL       | 20         | 
    | 8003       | SANDRA     | CONSULTANT | 7698       | 2023-05-10 | 2700       | NULL       | 30         | 
    | 8004       | KAREN      | CLERK      | 7902       | 2023-06-11 | 1200       | NULL       | 20         | 
    +------------+------------+------------+------------+------------+------------+------------+------------+
  5. emp テーブルをクエリして、各部門で給与が最も高い従業員と最も低い従業員の完全な情報を取得します。

    WITH ranked AS (
        SELECT e.*,
               ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) AS rn_desc,
               ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal ASC)  AS rn_asc
        FROM emp e
    )
    SELECT *
    FROM ranked
    WHERE rn_desc = 1 
       OR rn_asc  = 1
    ORDER BY deptno, sal DESC;
    
    -- 次の結果が返されます。
    +-------+--------+-----------+------+------------+------+------+--------+------------+------------+
    | empno | ename  | job       | mgr  | hiredate   | sal  | comm | deptno | rn_desc    | rn_asc     |
    +-------+--------+-----------+------+------------+------+------+--------+------------+------------+
    | 7839  | KING   | PRESIDENT | NULL | 2021-11-17 | 5000 | NULL | 10     | 1          | 4          |
    | 7934  | MILLER | CLERK     | 7782 | 2022-01-23 | 1300 | NULL | 10     | 4          | 1          |
    | 8001  | DUKE   | ENGINEER  | 7788 | 2023-03-15 | 3500 | NULL | 20     | 1          | 8          |
    | 7369  | SMITH  | CLERK     | 7902 | 2020-12-17 | 800  | NULL | 20     | 8          | 1          |
    | 7698  | BLAKE  | MANAGER   | 7839 | 2021-05-01 | 2850 | NULL | 30     | 1          | 8          |
    | 7900  | JAMES  | CLERK     | 7698 | 2021-12-03 | 950  | NULL | 30     | 8          | 1          |
    +-------+--------+-----------+------+------------+------+------+--------+------------+------------+

ステップ 8:分析結果の DLF への書き戻し

  1. 前のステップの外部プロジェクトで、SQL 分析結果を保存するためのテーブルを作成します。

    CREATE TABLE emp_detail (
        empno    INT,
        ename    VARCHAR(20),
        job      VARCHAR(20),
        mgr      INT,
        hiredate DATE,
        sal      DECIMAL(10,2),
        comm     DECIMAL(10,2),
        deptno   INT
    );
  2. ステップ 7 の分析結果を新しいテーブルに書き込みます。

    WITH ranked AS (
        SELECT e.*,
               ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) AS rn_desc,
               ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal ASC)  AS rn_asc
        FROM emp e
    )
    insert into emp_detail 
    SELECT 
        empno,ename,job,mgr,
        hiredate,sal,comm,deptno
    FROM ranked
    WHERE rn_desc = 1 
       OR rn_asc  = 1
    ORDER BY deptno, sal DESC;
  3. 新しいテーブルをクエリします。

    SELECT * FROM emp_detail;
    
    -- 次の結果が返されます。
    +------------+------------+------------+------------+------------+------------+------------+------------+
    | empno      | ename      | job        | mgr        | hiredate   | sal        | comm       | deptno     | 
    +------------+------------+------------+------------+------------+------------+------------+------------+
    | 7839       | KING       | PRESIDENT  | NULL       | 2021-11-17 | 5000       | NULL       | 10         | 
    | 7934       | MILLER     | CLERK      | 7782       | 2022-01-23 | 1300       | NULL       | 10         | 
    | 8001       | DUKE       | ENGINEER   | 7788       | 2023-03-15 | 3500       | NULL       | 20         | 
    | 7369       | SMITH      | CLERK      | 7902       | 2020-12-17 | 800        | NULL       | 20         | 
    | 7698       | BLAKE      | MANAGER    | 7839       | 2021-05-01 | 2850       | NULL       | 30         | 
    | 7900       | JAMES      | CLERK      | 7698       | 2021-12-03 | 950        | NULL       | 30         | 
    +------------+------------+------------+------------+------------+------------+------------+------------+
  4. Data Lake Formation (DLF) コンソールにログインします。左側のナビゲーションウィンドウで、Catalog List を選択します。新しく作成された emp_detail テーブルが表示されます。