Utilisation d'une hiérarchie de plusieurs catalogues dans AWS Glue Data Catalog 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 de plusieurs catalogues dans AWS Glue Data Catalog avec Spark sur Amazon EMR

Vous pouvez enregistrer votre EMR cluster Amazon pour accéder au catalogue de données AWS Glue, qui met les tables et autres ressources du catalogue à la disposition de différents consommateurs. AWS Glue Data Catalog prend en charge une hiérarchie de catalogues multiples, qui unifie vos données dans les lacs de données Amazon S3. Il fournit également à la fois un métastore Hive API et un Apache Iceberg REST API 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 SQL moteur prenant en charge le métastore Apache Iceberg REST API ou 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 qui contient 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 RMS tables, 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.

  • Tables 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 EMR les outils Amazon. Le catalogue de données AWS Glue est compatible avec le métastore Hive et avec Iceberg. REST APIs

Configuration d'Amazon EMR avec un métastore Hive

Pour plus d'informations sur la configuration de cette option, consultez la section relative à la prise en charge des tâches Spark par AWS Glue Data Catalog 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. De plus, une EMR documentation Amazon est disponible qui explique comment spécifier AWS Glue Data Catalog en tant que métastore Spark, dans Use the AWS Glue Data Catalog en tant que métastore Apache Hive pour Spark.

Autorisations d'accès aux ressources dans AWS Glue Data Catalog

Cette section décrit les exigences IAM politiques relatives à l'utilisation des EMR outils Amazon avec les données du catalogue. Après avoir enregistré votre cluster dans le 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

  • sets : AssumeRole

  • sets : TagSession

  • sets : SetContext

  • sets : SetSourceIdentity

Dans la plupart des cas, lorsque vous attribuez des autorisations, nous vous recommandons de créer un IAM rôle 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, consultez la section 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 sur les objets de votre catalogue, vous pouvez soumettre des tâches pour interroger et traiter des données.

Configurer Spark pour accéder à une hiérarchie de catalogues multiples dans AWS Glue Data Catalog

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

  • Importez vos données Redshift Managed Storage (RMS), telles que les tables, les vues et les vues matérialisées provenant des entrepôts de données Amazon Redshift existants, vers Glue Data Catalog. AWS Vous pouvez interroger ces objets en utilisant EMR on EC2 et EMR Serverless.

  • Créez des RMS catalogues, AWS Glue Data Catalog, stockez les données à RMS l'aide de Zero ETL et interrogez les données à l'aide de moteurs de requête compatibles avec Iceberg.

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

Connexion à un catalogue multiple lors de l'initialisation d'une session Spark

Les exemples suivants montrent comment utiliser le shell interactif Spark, Spark Submit ou Amazon EMR Notebooks pour utiliser la hiérarchie multi-catalogues de AWS Glue.

spark-shell
  1. Connectez-vous au nœud principal à l'aide deSSH. Pour plus d'informations, consultez Connect to the master node SSH à l'aide de l'Amazon EMR Management Guide.

  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. Connectez-vous au nœud principal à l'aide deSSH. Pour plus d'informations, consultez Connect to the master node SSH à l'aide de l'Amazon EMR Management Guide.

  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 de blocs-notes EMR Studio, configurez votre session Spark à l'aide de la commande %%configure magique de votre EMR bloc-notes Amazon, comme dans l'exemple suivant. Pour plus d'informations, consultez la section Utiliser la magie EMR des blocs-notes dans le guide de EMRgestion Amazon.

%%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 deCLI, exécutez l'exemple suivant. Pour plus d'informations sur la spécification d'une classification de configuration à l'aide de AWS CLI et Amazon EMRAPI, consultez Configurer les 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" } } ]

Initialisation d'une session Spark dans Redshift Managed Storage with AWS Glue Data Catalog

L'exemple de commande suivant initialise une session Spark avec le AWS Glue Data Catalog.

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 du catalogue de données Iceberg et REST API Redshift Managed Storage with Glue AWS .

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, consultez Utiliser un cluster Iceberg avec Spark.

Considérations et limites relatives à une configuration à catalogues multiples

  • L'utilisation d'une hiérarchie de catalogues multiples avec le métastore Apache Hive n'est pas prise en charge.

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

  • EMRsur les EC2 clusters dotés du rôle Runtime, la hiérarchie multi-catalogues n'est pas prise en charge.

  • EMRsur les EC2 clusters activés qui AWS Lake Formation ne prennent pas en charge la hiérarchie multi-catalogues.