

# 在 Athena for Spark 中使用 Apache Iceberg 表
<a name="notebooks-spark-table-formats-apache-iceberg"></a>

[Apache Iceberg](https://iceberg.apache.org/) 是 Amazon Simple Storage Service（Amazon S3）中适用于大型数据集的开放表格式。它提供快速的大型表查询性能、原子提交、并发写入和 SQL 兼容表演进等功能。

要在 Athena for Spark 中使用 Apache Iceberg 表，配置以下 Spark 属性。当选择 Apache Iceberg 作为表格式时，这些属性是在 Athena for Spark 控制台中默认配置的属性。有关步骤，请参阅 [步骤 4：编辑会话详细信息](notebooks-spark-getting-started.md#notebooks-spark-getting-started-editing-session-details) 和 [步骤 7：创建自己的笔记本](notebooks-spark-getting-started.md#notebooks-spark-getting-started-creating-your-own-notebook)。

```
"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://amzn-s3-demo-bucket"
   ```

1. 创建 Apache Spark [DataFrame](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/dataframe.html)。

   ```
   columns = ["language","users_count"]
   data = [("Golang", 3000)]
   df = spark.createDataFrame(data, columns)
   ```

1. 创建数据库。

   ```
   spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
   ```

1. 创建空白 Apache Iceberg 表。

   ```
   spark.sql("""
   CREATE TABLE {}.{} (
   language string,
   users_count int
   ) USING ICEBERG
   """.format(DB_NAME, TABLE_NAME))
   ```

1. 在表中插入一行数据。

   ```
   spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME, TABLE_NAME))
   ```

1. 确认您可以查询新表。

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

有关使用 Spark DataFrames 和 Iceberg 表的更多信息和示例，请参阅 Apache Iceberg 文档中的 [Spark 查询](https://iceberg.apache.org/docs/latest/spark-queries/)。