Apache Hudi - Amazon Athena

Apache Hudi

Apache Hudi は、増分データ処理を簡素化するオープンソースのデータ管理フレームワークです。レコードレベルの挿入、更新、upsert、および削除アクションがより正確に処理されるため、オーバーヘッドが減少します。

Athena for Spark で Apache Hudi テーブルを使用するには、次の Spark プロパティを設定します。これらのプロパティは、Athena for Spark コンソールでテーブル形式として Apache Hudi を選択したときに、デフォルトで自動的に設定されます。手順については、「セッションの詳細を編集する」または「独自のノートブックの作成」を参照してください。

"spark.sql.catalog.spark_catalog": "org.apache.spark.sql.hudi.catalog.HoodieCatalog", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.extensions": "org.apache.spark.sql.hudi.HoodieSparkSessionExtension"

以下の手順では、Athena for Spark ノートブックで Apache Hudi テーブルを使用する方法を示しています。ノートブックの新しいセルで各ステップを実行します。

Athena for Spark で Apache Hudi テーブルを使用する方法
  1. ノートブックで使用する定数を定義します。

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://DOC-EXAMPLE-BUCKET"
  2. Apache Spark DataFrame を作成します。

    columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
  3. データベースを作成します。

    spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
  4. 空の Apache Hudi テーブルを作成します。

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING HUDI TBLPROPERTIES ( primaryKey = 'language', type = 'mor' ); """.format(DB_NAME, TABLE_NAME))
  5. テーブルにデータ行を挿入します。

    spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME,TABLE_NAME))
  6. 新しいテーブルをクエリできることを確認します。

    spark.sql("SELECT * FROM {}.{}".format(DB_NAME, TABLE_NAME)).show()