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

E-MapReduce:Hudi の使用

最終更新日:Apr 18, 2025

Apache Hudi は、Hadoop 互換ファイルシステムのデータの更新と削除を可能にするデータレイクフレームワークです。Hudi では、変更されたデータを使用することもできます。詳細については、「Apache Hudi」をご参照ください。このトピックでは、EMR Serverless Spark で Hudi テーブルのデータを読み書きする方法について説明します。

前提条件

ワークスペースが作成されていること。詳細については、「ワークスペースを作成する」をご参照ください。

手順

ステップ 1: SQL セッションを作成する

  1. セッションページに移動します。

    1. EMR コンソール にログオンします。

    2. 左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。

    3. [Spark] ページで、管理するワークスペースの名前をクリックします。

    4. [EMR Serverless Spark] ページの左側のナビゲーションウィンドウで、[オペレーションセンター] > [セッション] を選択します。

  2. [SQL セッション] タブで、[SQL セッションの作成] をクリックします。

  3. [SQL セッションの作成] ページの [Spark 設定] セクションで、次のコードを追加し、[作成] をクリックします。詳細については、「SQL セッションを管理する」をご参照ください。

    次のコードでは、ワークスペースのデフォルトカタログが使用されます。外部 Hive Metastore をカタログとして使用する方法については、「外部 Hive Metastore に接続する」をご参照ください。

    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 テーブルのデータを読み書きする

  1. EMR Serverless Spark のデータ開発ページに移動します。

    [EMR Serverless Spark] ページの左側のナビゲーションウィンドウで、[データ開発] をクリックします。

  2. [開発] タブで、image アイコンをクリックします。

  3. [作成] ダイアログボックスで、名前パラメーターを users_task に設定し、タイプパラメーターにデフォルト値 SparkSQL を使用して、[OK] をクリックします。

  4. 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;
  5. [デフォルトデータベース] ドロップダウンリストからデータベースを選択し、[SQL セッション] ドロップダウンリストから作成した SQL セッションを選択します。

  6. [実行] をクリックします。次の図は出力を示しています。

    image

関連情報

  • SQL ジョブを開発およびオーケストレーションする方法については、「Spark SQL ジョブ開発の開始」をご参照ください。

  • Hudi の詳細については、「Apache Hudi」をご参照ください。