Apache Hudi et Lake Formation - Amazon EMR

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 et Lake Formation

Les EMR versions 6.15.0 et ultérieures d'Amazon incluent la prise en charge d'un contrôle d'accès précis basé sur Apache Hudi lorsque vous lisez et écrivez des données AWS Lake Formation avec Spark. SQL Amazon EMR prend en charge le contrôle d'accès au niveau des tables, des lignes, des colonnes et des cellules avec Apache Hudi. Grâce à cette fonctionnalité, vous pouvez exécuter des requêtes instantanées sur copy-on-write des tables pour demander le dernier instantané de la table à un instant de validation ou de compactage donné.

Actuellement, un EMR cluster Amazon compatible avec Lake Formation doit récupérer la colonne de temps de validation de Hudi pour effectuer des requêtes incrémentielles et des requêtes de voyage dans le temps. Il ne prend pas en charge la timestamp as of syntaxe et la Spark.read() fonction de Spark. La syntaxe correcte estselect * from table where _hoodie_commit_time <= point_in_time. Pour plus d'informations, voir Requêtes ponctuelles sur le voyage dans le temps sur la table Hudi.

La matrice de support suivante répertorie certaines fonctionnalités essentielles d'Apache Hudi avec Lake Formation :

Copie sur écriture fusion sur lecture

Requêtes instantanées - Spark SQL

Requêtes optimisées pour la lecture - Spark SQL

Requêtes progressives

Requêtes Time Travel

Tables de métadonnées

DMLINSERTcommandes

DDLcommandes

Requêtes de source de données Spark

Écritures de source de données Spark

Interrogation des tables Hudi

Cette section explique comment exécuter les requêtes prises en charge décrites ci-dessus sur un cluster compatible avec Lake Formation. La table doit être une table de catalogue enregistrée.

  1. Pour démarrer le shell Spark, utilisez les commandes suivantes :

    spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog.lf.managed=true

    Si vous souhaitez que Lake Formation utilise un serveur d'enregistrement pour gérer votre catalogue Spark, définissez spark.sql.catalog.<managed_catalog_name>.lf.managed ce paramètre sur true.

  2. Pour demander le dernier instantané des copy-on-write tables, utilisez les commandes suivantes.

    SELECT * FROM my_hudi_cow_table
    spark.read.table("my_hudi_cow_table")
  3. Pour interroger les dernières données compactées des tables MOR, vous pouvez interroger la table optimisée en lecture qui est suffixée par _ro :

    SELECT * FROM my_hudi_mor_table_ro
    spark.read.table("my_hudi_mor_table_ro")
Note

Les performances des lectures sur les clusters de Lake Formation peuvent être plus lentes en raison d'optimisations non prises en charge. Ces fonctionnalités incluent la liste des fichiers basée sur les métadonnées Hudi et le saut de données. Nous vous recommandons de tester les performances de votre application pour vous assurer qu’elle répond à vos exigences.