Apache Iceberg - Amazon Athena

Apache Iceberg

Apache Iceberg é 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 Como editar os detalhes da sessão ou Como criar seu próprio caderno.

"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"
  2. Crie um DataFrame do Apache Spark.

    columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
  3. Crie um banco de dados.

    spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
  4. Crie uma tabela vazia do Apache Iceberg.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING ICEBERG """.format(DB_NAME, TABLE_NAME))
  5. Insira uma linha de dados na tabela.

    spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME, TABLE_NAME))
  6. 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 na documentação do Apache Iceberg.