このトピックでは、E-MapReduce (EMR) on ECS の Trino 環境から、Apache Paimon の REST カタログプロトコルを使用して Data Lake Formation (DLF) カタログにアクセスする方法について説明します。
前提条件
開始する前に、以下を確認してください。
バージョン 5.13.0 以降を実行し、Trino コンポーネントが選択されている EMR クラスター
(オプション) 別のバージョンのサポートが必要な場合は、DingTalk グループ (ID: 106575000021) に参加して DLF 開発者にご連絡ください
カタログの作成
詳細については、「DLF をセットアップする」をご参照ください。
ロールへの DLF 権限の付与
EMR ノードが DLF にアクセスできるように、必要な権限を AliyunECSInstanceForEMRRole ロールに付与します。これには、Resource Access Management (RAM) アクセスポリシーの付与と DLF カタログ権限の付与の 2 つのステップが含まれます。
EMR プロダクトと DLF の統合が完了した後は、ステップ 1 をスキップできます。
AliyunECSInstanceForEMRRole ロールに RAM 権限を付与します。
Alibaba Cloud アカウントまたは RAM 管理者として RAM コンソールにログインします。
ナビゲーションウィンドウで、ID 管理 > ロール を選択します。AliyunECSInstanceForEMRRole を検索します。
[操作] 列で、権限の追加 をクリックします。
アクセスポリシー セクションで、AliyunDLFFullAccess を検索して選択し、権限の追加を確認 をクリックします。

AliyunECSInstanceForEMRRole ロールに DLF 権限を付与します。
Data Lake Formation コンソールにログインします。
カタログ ページで、カタログの名前をクリックして詳細ページを開きます。
権限 タブをクリックし、付与 をクリックします。
[付与] ページで、次のパラメーターを設定し、OK をクリックします。
ユーザー/ロール を RAM ユーザー/RAM ロール に設定します。
承認オブジェクトの選択 で、ドロップダウンリストから AliyunECSInstanceForEMRRole を選択します。
注意:ドロップダウンリストに AliyunECSInstanceForEMRRole がない場合は、ユーザー管理ページに移動して 同期 をクリックしてください。
プリセット権限タイプ を データ編集者 に設定します。
EMR クラスターの Paimon 依存関係のアップグレード
EMR はマネージドクラスター環境であるため、各ノードでファイルを直接置き換えるのではなく、スクリプトアクションを通じて Paimon プラグインの JAR を更新する必要があります。
Paimon 依存関係をインポートします。
必要な 2 つの JAR ファイルをダウンロードし、Object Storage Service (OSS) にアップロードします。ファイルの権限を 公開読み取り に設定します。アップロード手順については、「簡易アップロード」をご参照ください。
次のアップグレードスクリプトを作成し、OSS にアップロードします。
#!/bin/bash echo 'backup paimon-trino-ali-.*' sudo mkdir /tmp/upgrade-trino-dlf2.5 sudo cp -r /opt/apps/TRINO/trino-current/plugin/paimon /tmp/upgrade-trino-dlf2.5 echo 'clear old paimon plugin jars' sudo rm -rf /opt/apps/TRINO/trino-current/plugin/paimon/* echo 'download paimon-ali-trino-1.4.jar' cd /opt/apps/TRINO/trino-current/plugin/paimon/ wget ${paimon-ali-jindo-1.4.jar} wget ${paimon-trino-422-1.4-plugin.jar}重要${paimon-ali-jindo-1.4.jar}と${paimon-trino-422-1.4-plugin.jar}を、対応するファイルの OSS ダウンロードパスに置き換えてください。例:https://<bucket>.oss-cn-hangzhou-internal.aliyuncs.com/jars/paimon-ali-jindo-1.4.jar。
EMR クラスターでスクリプトを手動スクリプトアクションとして実行します。詳細については、「スクリプトの手動実行」をご参照ください。
EMR クラスターで、スクリプト操作 > 手動実行 に移動し、作成して実行 をクリックします。
ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
名前:スクリプトの名前を入力します。
スクリプトの場所:OSS にアップロードしたアップグレードスクリプトを選択します。パスは
oss://**/*.sh形式に従う必要があります。実行範囲:クラスター を選択します。
カタログに接続するための Trino の設定
EMR クラスターで、クラスターサービス に移動し、Trino サービスの 設定 をクリックして、paimon.properties ファイルに次の設定を追加または変更します。
connector.name=paimon
warehouse=dlf_test
metastore=rest
token.provider=dlf
uri=http://<region-id>-vpc.dlf.aliyuncs.com
dlf.token-loader=ecsREST カタログのコンテキストでは、warehouseはファイルシステムパスではなく、ご利用の DLF カタログインスタンスの名前です。従来の Hive またはファイルシステムカタログでは、warehouseはhdfs:///path/to/warehouseのようなストレージパスを指します。DLF REST カタログでは、dlf_testのようにカタログインスタンス名である必要があります。
次の表に各パラメーターを示します。
| パラメーター | 説明 | 必須 | 例 |
|---|---|---|---|
connector.name | コネクタタイプ。paimon に設定します。 | はい | paimon-1-ali-11.0 |
warehouse | DLF カタログインスタンスの名前。 | はい | dlf_test |
metastore | メタストアタイプ。rest に設定します。 | はい | rest |
token.provider | トークンプロバイダー。dlf に設定します。 | はい | dlf |
uri | DLF REST カタログサーバーの URI。形式は http://[region-id]-vpc.dlf.aliyuncs.com です。リージョン ID のリストについては、「エンドポイント」をご参照ください。 | はい | http://cn-hangzhou-vpc.dlf.aliyuncs.com |
dlf.token-loader | ECS インスタンスロールによって発行された一時的なトークンを使用して認証します。ecs に設定します。これは、EMR on ECS のデプロイメントで推奨されるアプローチです。なぜなら、ECS インスタンスロールはすでに EMR ノードにアタッチされており、AccessKey 認証情報を管理する必要がなくなるためです。 | はい | ecs |
設定を保存した後、Trino サービスを再起動して変更を有効にします。
Trino を使用した Paimon テーブルの読み取り
Trino コマンドラインインターフェイス (CLI) に入ります。
sh /opt/apps/TRINO/trino-current/bin/trino --server master-1-1:9090DLF カタログからテーブルをクエリします。次の例では、カタログ内の既存のテーブルである
users_samplesから読み取ります。select * from paimon.default.users_samples;