Apache Iceberg - Amazon Athena

Apache Iceberg

Apache Iceberg は、Amazon Simple Storage Service (Amazon S3) の大規模データセット用のオープンテーブル形式です。大きなテーブルに対する高速のクエリパフォーマンス、アトミックコミット、同時書き込み、および SQL 互換テーブルの進化を提供します。

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

"spark.sql.catalog.spark_catalog": "org.apache.iceberg.spark.SparkSessionCatalog", "spark.sql.catalog.spark_catalog.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.spark_catalog.io-impl": "org.apache.iceberg.aws.s3.S3FileIO", "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"

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

Athena for Spark で Apache Iceberg テーブルを使用する方法
  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 Iceberg テーブルを作成します。

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING ICEBERG """.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()

Spark DataFrames と Iceberg テーブルの使用に関する詳細と例については、Apache Iceberg ドキュメントの「Spark クエリ」を参照してください。