Apache Iceberg - Amazon Athena

Apache Iceberg

Apache Iceberg es un formato de tabla de código abierto para conjuntos de datos de gran tamaño en Amazon Simple Storage Service (Amazon S3). Ofrece un rendimiento rápido de consultas en tablas grandes, confirmaciones atómicas, escrituras simultáneas y una evolución de tablas compatible con SQL.

Para usar las tablas de Apache Iceberg en Athena para Spark, configure las siguientes propiedades de Spark. Estas propiedades se configuran de forma predeterminada en la consola Athena para Spark cuando elige Apache Iceberg como formato de tabla. Para ver los pasos, consulte Edición de detalles de la sesión o Creación de un cuaderno propio.

"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"

En el siguiente procedimiento, se muestra cómo utilizar una tabla de Apache Iceberg en un cuaderno Athena para Spark. Ejecute cada paso en una nueva celda del cuaderno.

Para usar una tabla de Apache Iceberg en Athena para Spark
  1. Defina las constantes que se utilizarán en el cuaderno.

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://DOC-EXAMPLE-BUCKET"
  2. Cree un DataFrame de Apache Spark.

    columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
  3. Cree una base de datos.

    spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
  4. Cree una tabla de Apache Iceberg vacía.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING ICEBERG """.format(DB_NAME, TABLE_NAME))
  5. Inserte una fila de datos en la tabla.

    spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME, TABLE_NAME))
  6. Confirme que puede consultar la nueva tabla.

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

Para obtener más información y ejemplos sobre cómo trabajar con DataFrames de Spark y tablas de Iceberg, vea Consultas de Spark en la documentación de Apache Iceberg.