Apache Iceberg - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Apache Iceberg

Apache Iceberg est un format de table ouvert pour les jeux de données volumineux dans Amazon Simple Storage Service (Amazon S3). Il vous fournit des performances de requête rapides sur de grandes tables, des validations atomiques, des écritures SQL simultanées et une évolution de table compatible.

Pour utiliser les tables Apache Iceberg dans Athena pour Spark, configurez les propriétés Spark suivantes. Ces propriétés sont configurées pour vous par défaut dans la console Athena pour Spark lorsque vous choisissez Apache Iceberg comme format de table. Pour les étapes, consultez Modification des détails de la session ou Création de votre propre bloc-notes.

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

La procédure suivante explique comment utiliser une table Apache Iceberg dans un bloc-notes Athena pour Spark. Exécutez chaque étape dans une nouvelle cellule du bloc-notes.

Pour utiliser une table Apache Iceberg dans Athena pour Spark.
  1. Définissez les constantes à utiliser dans le bloc-notes.

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://amzn-s3-demo-bucket"
  2. Créez un Apache Spark DataFrame.

    columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
  3. Créez une base de données.

    spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
  4. Créez une table Apache Iceberg vide.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING ICEBERG """.format(DB_NAME, TABLE_NAME))
  5. Insérez une ligne de données dans la table.

    spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME, TABLE_NAME))
  6. Confirmez que vous pouvez interroger la nouvelle table.

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

Pour plus d'informations et des exemples sur l'utilisation des tables Spark DataFrames et Iceberg, consultez la section Spark Queries dans la documentation d'Apache Iceberg.