Apache Hudi - 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 Hudi

Apache Hudi est un cadre de gestion de données open source qui simplifie le traitement progressif des données. Les actions d'insertion, de mise à jour, de mise à jour/insertion et de suppression au niveau de l'enregistrement sont traitées avec une plus grande précision, ce qui réduit la surcharge.

Pour utiliser les tables Apache Hudi 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 Hudi 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.spark.sql.hudi.catalog.HoodieCatalog", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.extensions": "org.apache.spark.sql.hudi.HoodieSparkSessionExtension"

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

Pour utiliser une table Apache Hudi 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 Hudi vide.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING HUDI TBLPROPERTIES ( primaryKey = 'language', type = 'mor' ); """.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()