Apache Hudi は、レコードレベルでの挿入、更新、削除、および増分処理のための変更データキャプチャを可能にするデータレイクストレージ形式です。詳細については、「Apache Hudi」をご参照ください。このトピックでは、EMR Serverless Spark で Hudi テーブルを読み書きする方法について説明します。
前提条件
ワークスペースが作成済みであること。詳細については、「ワークスペースの作成」をご参照ください。
手順
ステップ 1: SQL セッションの作成
-
[セッション] ページに移動します。
-
EMR コンソールにログインします。
-
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
-
[Spark] ページで、対象のワークスペースの名前をクリックします。
-
EMR Serverless Spark ページで、左側のナビゲーションウィンドウの Sessions をクリックします。
-
-
SQL Session ページで、Connect to SQL Session をクリックします。
-
Connect to SQL Session ページで、Spark Configuration セクションに次のパラメーターを追加し、create をクリックします。詳細については、「SQL セッションの管理」をご参照ください。
この設定は、現在のワークスペースのデフォルトカタログに適用されます。外部 Hive メタストアをデフォルトカタログとして使用する方法については、「外部 Hive メタストアサービスへの接続」をご参照ください。
spark.sql.extensions org.apache.spark.sql.hudi.HoodieSparkSessionExtension spark.sql.catalog.spark_catalog org.apache.spark.sql.hudi.catalog.HoodieCatalog spark.serializer org.apache.spark.serializer.KryoSerializer
ステップ 2: Hudi テーブルの読み書き
-
開発ページに移動します。
EMR Serverless Spark ページで、左側のナビゲーションペインで Development をクリックします。
-
[開発] タブで、
アイコンをクリックします。 -
[作成] ダイアログボックスで、users_task などの名前を入力し、タイプはデフォルトの [SparkSQL] のままにして、[OK] をクリックします。
-
新しく作成された SparkSQL タブ (users_task) に、次のコードを貼り付けます。
CREATE DATABASE IF NOT EXISTS ss_hudi_db; CREATE TABLE ss_hudi_db.hudi_tbl (id INT, name STRING) USING hudi TBLPROPERTIES ( type = 'cow', primaryKey = 'id' ); INSERT INTO ss_hudi_db.hudi_tbl VALUES (1, "a"), (2, "b"); SELECT id, name FROM ss_hudi_db.hudi_tbl ORDER BY id; DROP TABLE ss_hudi_db.hudi_tbl; DROP DATABASE ss_hudi_db; -
ドロップダウンリストから、データベースと先ほど作成した SQL セッションを選択します。
-
実行 をクリックしてジョブを実行します。
結果は、
id=1とname=aのレコード、およびid=2とname=bのレコードの 2 つを含むテーブルです。
関連ドキュメント
-
Hudi の使用方法と設定の詳細については、「Hudi の公式ドキュメント」をご参照ください。