

# Usar tabelas do Apache Iceberg no Athena para Spark
<a name="notebooks-spark-table-formats-apache-iceberg"></a>

O [Apache Iceberg](https://iceberg.apache.org/) é um formato de tabela aberta para grandes conjuntos de dados no Amazon Simple Storage Service (Amazon S3). Ele fornece performance rápida de consultas em tabelas grandes, confirmações atômicas, gravações simultâneas e evolução de tabelas compatível com SQL.

Para usar tabelas do Apache Iceberg no Athena para Spark, configure as propriedades do Spark a seguir. Essas propriedades são configuradas por padrão no console do Athena para Spark quando você escolhe Apache Iceberg como formato de tabela. Para obter as etapas, consulte [Etapa 4: editar detalhes de sessões](notebooks-spark-getting-started.md#notebooks-spark-getting-started-editing-session-details) ou [Etapa 7: criar seu próprio caderno](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"
```

O procedimento a seguir mostra como usar uma tabela do Apache Iceberg em um caderno do Athena para Spark. Execute cada etapa em uma nova célula no caderno.

**Para usar tabelas do Apache Iceberg no Athena para Spark**

1. Defina as constantes a serem usadas no caderno.

   ```
   DB_NAME = "NEW_DB_NAME"
   TABLE_NAME = "NEW_TABLE_NAME"
   TABLE_S3_LOCATION = "s3://amzn-s3-demo-bucket"
   ```

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

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

1. Crie um banco de dados.

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

1. Crie uma tabela vazia do Apache Iceberg.

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

1. Insira uma linha de dados na tabela.

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

1. Confirme se é possível consultar a nova tabela.

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

Para obter mais informações e exemplos sobre como trabalhar com tabelas DataFrames e Iceberg do Spark, consulte [Spark Queries](https://iceberg.apache.org/docs/latest/spark-queries/) na documentação do Apache Iceberg.