Apache Paimon は、ストリーミングとバッチ処理を統合したデータレイク形式であり、高スループットの書き込みと低レイテンシーのクエリをサポートします。このトピックでは、EMR Serverless Spark で Paimon テーブルを読み書きする方法について説明します。
前提条件
ワークスペースが作成済みであること。詳細については、「ワークスペースの作成」をご参照ください。
手順
ステップ 1:SQL セッションの作成
-
[セッション] ページに移動します。
-
EMR コンソールにログインします。
-
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
-
[Spark] ページで、対象のワークスペースの名前をクリックします。
-
EMR Serverless Spark ページで、左側のナビゲーションウィンドウの Sessions をクリックします。
-
-
SQL Sessions ページで、Create SQL Session をクリックします。
-
Create SQL Session ページで、Spark Configuration セクションのパラメーターを設定し、Create をクリックします。詳細については、「SQL セッションの管理」をご参照ください。
Spark はカタログを介して Paimon テーブルを読み書きします。シナリオに基づいてカタログタイプを選択します。詳細については、「データカタログの管理」をご参照ください。
データカタログ
データカタログを使用する場合、セッションパラメーターは不要です。Add Catalog ページの Catalogs をクリックし、Spark SQL 開発環境でデータカタログを選択します。
説明EMR エンジンバージョン esr-4.3.0 以降、esr-3.3.0 以降、または esr-2.7.0 以降を推奨します。
カスタムカタログ
Data Lake Formation (DLF)
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore rest spark.sql.catalog.<catalogName>.uri http://cn-hangzhou-vpc.dlf.aliyuncs.com spark.sql.catalog.<catalogName>.warehouse <catalog_name> spark.sql.catalog.<catalogName>.token.provider dlf spark.sql.catalog.<catalogName>.dlf.access-key-id <access_key_id> spark.sql.catalog.<catalogName>.dlf.access-key-secret <access_key_secret>パラメーター:
パラメーター
説明
値の例
spark.sql.catalog.<catalogName>カタログの実装。
固定値:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreメタデータのストレージ方法。DLF REST API を使用するには、
restに設定します。固定値:
restspark.sql.catalog.<catalogName>.uriDLF URI。形式:
http://<endpoint>-vpc.dlf.aliyuncs.com。http://cn-hangzhou-vpc.dlf.aliyuncs.comspark.sql.catalog.<catalogName>.warehouseウェアハウスパス。DLF の場合、これをカタログ名に設定します。
<catalog_name>spark.sql.catalog.<catalogName>.token.provider認証プロバイダーです。DLF の場合は
dlfに設定します。固定値:
dlfspark.sql.catalog.<catalogName>.dlf.access-key-idAlibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。
<access_key_id>spark.sql.catalog.<catalogName>.dlf.access-key-secretAlibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。
<access_key_secret>DLF 1.0
メタデータは DLF 1.0 に保存されます。
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore dlf spark.sql.catalog.<catalogName>.dlf.catalog.id <catalog_name> spark.sql.catalog.<catalogName>.dlf.catalog.endpoint dlf-vpc.cn-hangzhou.aliyuncs.comパラメーター:
パラメーター
説明
値の例
spark.sql.catalog.<catalogName>カタログの実装。
固定値:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreメタデータの保存方法。DLF をメタストアとして使用する場合は
dlfに設定します。固定値:
dlfspark.sql.catalog.<catalogName>.dlf.catalog.idDLF のカタログの名前。
<catalog_name>spark.sql.catalog.<catalogName>.dlf.catalog.endpointDLF エンドポイント。リージョンに基づいて DLF エンドポイントを選択します。
dlf-vpc.cn-hangzhou.aliyuncs.comHive Metastore
メタデータは、指定された Hive Metastore に保存されます。
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore hive spark.sql.catalog.<catalogName>.uri thrift://<yourHMSUri>:<port>パラメーター:
パラメーター
説明
値の例
spark.sql.catalog.<catalogName>カタログの実装。
固定値:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreメタストアのタイプ。Hive メタストアを使用するには、
hiveに設定します。固定値:
hivespark.sql.catalog.<catalogName>.uriHive Metastore の URI です。フォーマット:
thrift://<Hive メタストアの IP アドレス>:9083。<Hive metastore の IP アドレス>は、Hive Metastore サービスの内部 IP アドレスです。 外部メタストアを使用するには、「外部 Hive Metastore サービスに接続する」をご参照ください。thrift://192.168.**.**:9083ファイルシステム
メタデータはファイルシステムに保存されます。
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore filesystem spark.sql.catalog.<catalogName>.warehouse oss://<yourBucketName>/warehouseパラメーター:
パラメーター
説明
値の例
spark.sql.catalog.<catalogName>カタログの実装。
固定値:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreメタストアのタイプ。ファイルシステムをメタストアとして使用するには、
filesystemに設定します。固定値:
filesystemspark.sql.catalog.<catalogName>.warehouseウェアハウスのパスです。この例では、
<yourBucketName>は OSS バケットの名前です。oss://my-bucket/warehouseDLF、DLF 1.0、Hive など、複数のカタログを同時に設定できます。例:
# DLF カタログの設定 spark.sql.catalog.paimon_dlf org.apache.paimon.spark.SparkCatalog spark.sql.catalog.paimon_dlf.metastore rest spark.sql.catalog.paimon_dlf.uri http://cn-hangzhou-vpc.dlf.aliyuncs.com spark.sql.catalog.paimon_dlf.warehouse <catalog_name> spark.sql.catalog.paimon_dlf.token.provider dlf spark.sql.catalog.paimon_dlf.dlf.access-key-id <access_key_id> spark.sql.catalog.paimon_dlf.dlf.access-key-secret <access_key_secret> # DLF 1.0 カタログの設定 spark.sql.catalog.paimon_dlf_legacy org.apache.paimon.spark.SparkCatalog spark.sql.catalog.paimon_dlf_legacy.metastore dlf spark.sql.catalog.paimon_dlf_legacy.dlf.catalog.id <catalog_name> spark.sql.catalog.paimon_dlf_legacy.dlf.catalog.endpoint dlf-vpc.cn-hangzhou.aliyuncs.com # hive1 カタログの設定 spark.sql.catalog.paimon_hive1 org.apache.paimon.spark.SparkCatalog spark.sql.catalog.paimon_hive1.metastore hive spark.sql.catalog.paimon_hive1.uri thrift://<yourHMSUri-1>:<port> # hive2 カタログの設定 spark.sql.catalog.paimon_hive2 org.apache.paimon.spark.SparkCatalog spark.sql.catalog.paimon_hive2.metastore hive spark.sql.catalog.paimon_hive2.uri thrift://<yourHMSUri-2>:<port>
ステップ 2:Paimon テーブルの読み書き
-
SQL 開発ページに移動します。
EMR Serverless Spark ページで、左側メニューの Data Development をクリックします。
-
[開発] タブで、
アイコンをクリックします。 -
[作成] ダイアログボックスで、users_task などの名前を入力し、タイプはデフォルトの [SparkSQL] のままにして、[OK] をクリックします。
-
新しい Spark SQL タブ (users_task) に次のコードをコピーします。
Paimon カタログ
-- データベースの作成 CREATE DATABASE IF NOT EXISTS paimon.ss_paimon_db; -- Paimon テーブルの作成 CREATE TABLE paimon.ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon; -- Paimon テーブルへのデータ書き込み INSERT INTO paimon.ss_paimon_db.paimon_tbl VALUES (1, "a"), (2, "b"), (3, "c"); -- Paimon テーブルからの書き込み結果のクエリ SELECT * FROM paimon.ss_paimon_db.paimon_tbl ORDER BY id; -- データベースの削除 DROP DATABASE paimon.ss_paimon_db CASCADE; -
データベースのドロップダウンリストからデータベースを選択し、セッションのドロップダウンリストから作成した SQL セッションを選択します。
-
Run をクリックしてジョブを実行します。ジョブは次の出力を返します。

よくある質問
関連ドキュメント
-
SQL タスク開発およびオーケストレーションプロセスの完全な例については、「SparkSQL 開発のクイックスタート」をご参照ください。
-
Paimon の使用方法と設定の詳細については、Paimon の公式ドキュメントをご参照ください。
-
外部メタストアサービスを使用する方法については、「外部 Hive Metastore サービスへの接続」をご参照ください。