View a markdown version of this page

Utilisation d'une hiérarchie multi-catalogues dans AWS Catalogue de données Glue avec Spark sur Amazon EMR - 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.

Utilisation d'une hiérarchie multi-catalogues dans AWS Catalogue de données Glue avec Spark sur Amazon EMR

Vous pouvez enregistrer votre cluster Amazon EMR pour accéder au catalogue de données AWS Glue, qui met des tableaux et d'autres ressources du catalogue à la disposition des différents consommateurs. AWS Glue Data Catalog prend en charge une hiérarchie multi-catalogues, qui unifie vos données dans les lacs de données Amazon S3. Il fournit également à la fois une API de métastore Hive et une API REST Apache Iceberg open source pour accéder aux données. Ces fonctionnalités sont disponibles pour Amazon EMR et d'autres services tels qu' Amazon Athena Amazon Redshift.

Comment les ressources du catalogue sont organisées

Lorsque vous créez des ressources dans le catalogue de données AWS Glue, vous pouvez y accéder depuis n'importe quel moteur SQL prenant en charge l'API REST Apache Iceberg ou le métastore Hive. AWS Lake Formation gère les autorisations.

Dans AWS Glue Data Catalog, les données sont organisées selon une hiérarchie logique de catalogues, de bases de données et de tables :

  • Catalogue  : conteneur logique contenant des objets provenant d'un magasin de données, tels que des schémas ou des tables.

  • Catalogue pour stocker les tables Redshift Managed Storage (RMS) — Lorsque vous gérez des catalogues pour stocker des tables RMS, vous pouvez accéder à ces tables à l'aide d'Iceberg.

  • Base de données  : organise les objets de données tels que les tables et les vues dans un catalogue.

  • Tableaux et vues  : objets de données d'une base de données qui fournissent une couche d'abstraction avec un schéma compréhensible. Ils fournissent une couche permettant d'accéder aux données sous-jacentes, qui peuvent être dans différents formats et à différents emplacements.

Configuration d'un catalogue de données à utiliser avec Amazon EMR

Pour commencer, vous devez configurer le catalogue pour qu'il prenne en charge les outils Amazon EMR. Le catalogue de données AWS Glue assure la compatibilité des métastores Hive et des API compatibles Iceberg REST.

Configuration d'Amazon EMR avec un métastore Hive

Pour plus d'informations sur la façon de configurer cela, consultez AWS la section Support de Glue Data Catalog pour les tâches Spark dans le Guide de l'utilisateur de AWS Glue. Cette rubrique explique comment configurer AWS Glue Data Catalog en tant que métastore Hive et comment le rendre disponible en tant que point de terminaison. En outre, la documentation Amazon EMR vous montre comment spécifier AWS Glue Data Catalog en tant que métastore Spark, dans Utiliser le catalogue de données AWS Glue comme métastore Apache Hive pour Spark.

Autorisations d'accès aux ressources dans AWS Catalogue de données Glue

Cette section décrit les exigences de la politique IAM pour l'utilisation des outils Amazon EMR avec les données du catalogue. Après avoir enregistré votre cluster auprès du catalogue de données AWS Glue, vous devez disposer des autorisations suivantes pour découvrir la création et les modifications apportées au catalogue de données créé ultérieurement :

  • colle : GetCatalog

  • colle : GetCatalogs

  • ensembles : AssumeRole

  • ensembles : TagSession

  • ensembles : SetContext

  • ensembles : SetSourceIdentity

Dans la plupart des cas, lorsque vous attribuez des autorisations, nous vous recommandons de créer un rôle IAM et de lui attribuer des autorisations.

En outre, pour interroger les données du catalogue, vous devez définir des autorisations pour le catalogue de données à l'aide de AWS Lake Formation. Pour plus d'informations sur la définition des autorisations pour les catalogues de données dans AWS Lake Formation, voir Octroi et révocation d'autorisations sur les ressources du catalogue de données.

Après avoir créé et configuré votre cluster et défini les autorisations pour les objets de votre catalogue, vous pouvez soumettre des tâches pour interroger et traiter les données.

Configurez Spark pour accéder à une hiérarchie multi-catalogues dans AWS Catalogue de données Glue

Avec EMR 7.5, vous pouvez configurer Spark pour utiliser la hiérarchie multi-catalogues de AWS Glue. Une hiérarchie multi-catalogues vous permet de :

  • Transférez vos données Redshift Managed Storage (RMS), telles que des tableaux, des vues et des vues matérialisées provenant d'entrepôts de données Amazon Redshift existants, vers Glue Data Catalog. AWS Vous pouvez interroger ces objets à l'aide d'EMR sur EC2 et d'EMR Serverless.

  • Créez des catalogues RMS, AWS collez le catalogue de données et stockez les données dans RMS à l'aide de ZeroETL et interrogez les données à l'aide de moteurs de requête. Iceberg-compatible

  • Créez des tables Iceberg gérées dans AWS Glue Data Catalog avec une gestion complète du stockage qui inclut le compactage, les instantanés et la rétention.

Connexion au multi-catalogue lorsque vous initialisez une session Spark

Les exemples suivants montrent comment utiliser le shell interactif Spark, la soumission Spark ou les blocs-notes Amazon EMR pour travailler avec AWS la hiérarchie multi-catalogues de Glue.

spark-shell
  1. Connexion au nœud principal à l'aide de SSH Pour plus d'informations, consultez Connexion au nœud principal à l'aide de SSH dans le Guide de gestion d'Amazon EMR.

  2. Entrez la commande suivante pour lancer le shell Spark. Pour utiliser la PySpark coque, remplacez-la spark-shell parpyspark.

    spark-shell \ --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket/prefix/ --conf spark.sql.catalog.my_catalog.type=glue \ --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=my_catalog \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark-submit
  1. Connexion au nœud principal à l'aide de SSH Pour plus d'informations, consultez Connexion au nœud principal à l'aide de SSH dans le Guide de gestion d'Amazon EMR.

  2. Entrez la commande suivante pour lancer la session Spark pour Spark.

    spark-submit \ --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket1/prefix \ --conf spark.sql.catalog.my_catalog.type=glue \ --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=my_catalog \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
EMR Studio notebooks

Pour initialiser une session Spark à l'aide des blocs-notes EMR Studio, configurez votre session Spark à l'aide de la commande magique %%configure de votre bloc-notes Amazon EMR, comme dans l'exemple suivant. Pour plus d'informations, consultez Utilisation des magies de Blocs-notes EMR dans le Guide de gestion Amazon EMR.

%%configure -f{ "conf":{ "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.my_catalog.type":"glue", "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID", "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/", "spark.sql.defaultCatalog", "my_catalog", "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" } }
CLI

Pour initialiser une session Spark à l'aide de l'interface de ligne de commande, exécutez l'exemple suivant. Pour plus d'informations sur la spécification d'une classification de configuration à l'aide de AWS CLI l'API Amazon EMR, consultez la section Configuration des applications.

[ { "Classification": "spark-defaults", "Properties": { "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.my_catalog.type":"glue", "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID", "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/", "spark.sql.defaultCatalog", "my_catalog", "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" } } ]

Initialisez une session Spark avec Redshift Managed Storage avec AWS Catalogue de données Glue

L'exemple de commande suivant initialise une session Spark avec le catalogue de données AWS Glue.

spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=glue \ --conf spark.sql.catalog.rms.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=rms --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

L'exemple suivant initialise une session Spark à l'aide de l'API REST Iceberg et du stockage géré Redshift avec AWS Glue Data Catalog.

spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=rest \ --conf spark.sql.catalog.rms.warehouse=glue RMS catalog ID \ --conf spark.sql.catalog.rms.uri=Glue endpoint URI/iceberg \ --conf spark.sql.catalog.rms.rest.sigv4-enabled=true \ --conf spark.sql.catalog.rms.rest.signing-name=glue \ --conf spark.sql.defaultCatalog=rms \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Pour plus d'informations sur l'utilisation d'une hiérarchie multi-catalogues AWS Glue avec Spark Iceberg, voir Utiliser un cluster Iceberg avec Spark.

Considérations et limites relatives à une configuration multi-catalogues

  • L'utilisation d'une hiérarchie multi-catalogues avec la métastore Apache Hive n'est pas prise en charge.

  • L'utilisation d'une hiérarchie multi-catalogues avec Apache Iceberg ne permet pas de revenir à la métastore Apache Hive, lors de l'utilisation. SparkSessionCatalog

  • L'EMR sur les clusters EC2 dotés du rôle Runtime ne prend pas en charge la hiérarchie multi-catalogues.

  • L'EMR sur les clusters EC2 est activé et AWS Lake Formation ne prend pas en charge la hiérarchie multi-catalogues.