Apache Hudi - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Apache Hudi

Apache Hudi è un framework open source per la gestione dei dati che semplifica l'elaborazione incrementale dei dati. Le azioni di inserimento, aggiornamento, annullamento ed eliminazione a livello di record vengono elaborate con maggiore precisione, il che riduce il sovraccarico.

Per utilizzare le tabelle Apache Hudi in Athena per Spark, configura le seguenti proprietà Spark. Queste proprietà sono configurate automaticamente nella console Athena for Spark quando scegli Apache Hudi come formato di tabella. Per la procedura, consulta Modifica dei dettagli della sessione o Creazione di un notebook.

"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 seguente procedura mostra come utilizzare una tabella Apache Hudi in un notebook Athena per Spark. Esegui ogni passaggio in una nuova cella del notebook.

Per usare una tabella Apache Hudi in Athena per Spark
  1. Definisci le costanti da usare nel notebook.

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://amzn-s3-demo-bucket"
  2. Crea DataFrameun Apache Spark.

    columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
  3. Crea un database.

    spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
  4. Crea una tabella Apache Hudi vuota.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING HUDI TBLPROPERTIES ( primaryKey = 'language', type = 'mor' ); """.format(DB_NAME, TABLE_NAME))
  5. Inserisci una riga di dati nella tabella.

    spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME,TABLE_NAME))
  6. Conferma di poter eseguire query sulla nuova tabella.

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