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 avec Amazon EMR
Les EMR versions 6.15.0 et supé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 |
✓ |
✓ |
DML |
✓ |
✓ |
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.
-
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. -
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
") -
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
_rospark.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.