Athena for Spark で Apache Iceberg テーブルを使用する
Apache Iceberg
Athena for Spark で Apache Iceberg テーブルを使用するには、次の Spark プロパティを設定します。これらのプロパティは、Athena for Spark コンソールでテーブル形式として Apache Iceberg を選択したときに、デフォルトで自動的に設定されます。手順については、「ステップ 4: セッションの詳細を編集する」または「ステップ 7: 独自のノートブックを作成する」を参照してください。
"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 テーブルを使用する方法
-
ノートブックで使用する定数を定義します。
DB_NAME = "
NEW_DB_NAME
" TABLE_NAME = "NEW_TABLE_NAME
" TABLE_S3_LOCATION = "s3://amzn-s3-demo-bucket" -
Apache Spark DataFrame
を作成します。 columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
-
データベースを作成します。
spark.sql("CREATE DATABASE {} LOCATION '{}'".format(
DB_NAME
,TABLE_S3_LOCATION
)) -
空の Apache Iceberg テーブルを作成します。
spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING ICEBERG """.format(
DB_NAME
,TABLE_NAME
)) -
テーブルにデータ行を挿入します。
spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(
DB_NAME
,TABLE_NAME
)) -
新しいテーブルをクエリできることを確認します。
spark.sql("SELECT * FROM {}.{}".format(
DB_NAME
,TABLE_NAME
)).show()
Spark DataFrames と Iceberg テーブルの使用に関する詳細と例については、Apache Iceberg ドキュメントの「Spark クエリ