Comment utiliser Hive et Spark sur Amazon EMR pour interroger un catalogue de données qui se trouve dans un autre compte ?
Je souhaite utiliser Apache Hive et Apache Spark pour accéder au catalogue de données AWS Glue d'un autre compte AWS et l'interroger dans Amazon EMR.
Brève description
Pour accéder de façon dynamique au catalogue de données à partir de différents comptes, spécifiez la propriété aws.glue.catalog.separator dans vos configurations Hive ou Spark. Vous pouvez également spécifier la propriété hive.metastore.glue.catalogid dans vos configurations pour accéder à un catalogue de données spécifique dans un autre compte.
Résolution
Accordez l'accès intercompte à AWS Glue. Assurez-vous que le compartiment Amazon Simple Storage Service (Amazon S3) vers lequel pointent les tables AWS Glue est configuré pour un accès intercompte. Pour plus d'informations, consultez la section Comment configurer l'accès intercompte pour le système de fichiers EMR ?
Accéder de façon dynamique au catalogue de données dans différents comptes
Appliquer les modifications de configuration à un nouveau cluster
Lorsque vous lancez un cluster EMR, ajoutez un objet de configuration similaire à l'exemple suivant. Pour plus d'informations, consultez la section Configurer des applications lors de la création d'un cluster.
[ { "Classification": "hive-site", "Properties": { "aws.glue.catalog.separator": "/", "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } }, { "Classification": "spark-hive-site", "Properties": { "aws.glue.catalog.separator": "/", "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } } ]
Appliquer les modifications de configuration à un cluster en cours d'exécution
Procédez comme suit :
- Ouvrez la console Amazon EMR.
- Dans la liste de clusters, sous ID du cluster, choisissez le cluster actif que vous souhaitez reconfigurer.
- Sur la page des détails du cluster, choisissez l'onglet Applications.
- Sous Configurations de groupe d'instances, sélectionnez le groupe d'instances, puis choisissez Reconfigurer.
- Choisissez Ajouter une nouvelle configuration, puis entrez les informations suivantes :
Pour Classification, saisissez hive-site.
Dans Propriété, saisissez aws.glue.catalog.separator.
Dans Valeur, saisissez /.
Dans Classification, saisissez hive-site.
Dans Propriété, saisissez hive.metastore.client.factory.class.
Dans Valeur, saisissez com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory.
Dans Classification, saisissez spark-hive-site.
Dans Propriété, saisissez aws.glue.catalog.separator.
Dans Valeur, saisissez /.
Dans Classification, saisissez spark-hive-site.
Dans Propriété, saisissez hive.metastore.client.factory.class.
Dans Valeur, saisissez com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory. - Sélectionnez Appliquer cette configuration à tous les groupes d'instances actifs, puis sélectionnez Enregistrer les modifications. Pour en savoir plus, consultez la page Reconfigurer un groupe d’instances dans un cluster en cours d’exécution.
Tables de requêtes dans un autre compte
Remarque : Lorsque vous exécutez des tâches Spark sur Amazon EMR version 6.5, transmettez la propriété de configuration spark.sql.catalogImplementation=hive. Pour plus d'informations, consultez la page Chargement dynamique des propriétés Spark sur le site Web d'Apache Spark.
Pour interroger une table qui se trouve dans un autre compte, spécifiez le numéro de compte dans la requête. Le numéro de compte est le même que l'identifiant du catalogue. Par exemple, pour interroger demodb.tab1 dans le compte 111122223333, exécutez la commande suivante.
Hive :
SELECT * FROM `111122223333/demodb.tab1` LIMIT 5;
Spark :
spark.sql("SELECT * FROM `111122223333/demodb`.tt1 LIMIT 5").show()
Exécutez la commande Spark précédente dans le script spark-submit ou en tant que commande shell de bloc-notes.
Vous pouvez également joindre des tables de deux catalogues.
Hive :
SELECT * FROM `111122223333/demodb.tab1` t1 INNER JOIN `444455556666/demodb.tab2` t2 ON t1.col1 = t2.col2
Spark :
spark.sql(SELECT * FROM `111122223333/demodb.tab1` t1 INNER JOIN `444455556666/demodb.tab2` t2 ON t1.col1 = t2.col2).show()
Exécutez la commande Spark précédente dans le script spark-submit ou en tant que commande shell de bloc-notes.
Accéder à un catalogue de données spécifique dans un autre compte
Appliquer les modifications de configuration à un nouveau cluster
Lorsque vous lancez un cluster EMR, ajoutez un objet de configuration similaire à l'exemple suivant. Pour plus d'informations, consultez la section Configurer des applications lors de la création d'un cluster.
[ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.glue.catalogid": "account-id" } }, { "Classification": "spark-hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.glue.catalogid": "account-id" } } ]
Appliquer les modifications de configuration à un cluster en cours d'exécution
Procédez comme suit :
- Ouvrez la console Amazon EMR.
- Dans la liste de clusters, sous ID du cluster, choisissez le cluster actif que vous souhaitez reconfigurer.
- Sur la page des détails du cluster, choisissez l'onglet Applications.
- Sous Configurations de groupe d'instances, sélectionnez le groupe d'instances, puis choisissez Reconfigurer.
- Choisissez Ajouter une nouvelle configuration, puis entrez les informations suivantes :
Dans Classification, saisissez hive-site.
Dans Propriété, saisissez hive.metastore.glue.catalogid.
Dans Valeur, saisissez account-id.
Dans Classification, saisissez hive-site.
Dans Propriété, saisissez hive.metastore.client.factory.class.
Dans Valeur, saisissez com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory.
Dans Classification, saisissez spark-hive-site.
Dans Propriété, saisissez hive.metastore.glue.catalogid.
Dans Valeur, saisissez account-id.
Dans Classification, saisissez spark-hive-site.
Dans Propriété, saisissez hive.metastore.client.factory.class.
Dans Valeur, saisissez com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory. - Cochez Appliquer cette configuration à tous les groupes d'instances actifs, puis sélectionnez Enregistrer les modifications. Pour en savoir plus, consultez la page Reconfigurer un groupe d’instances dans un cluster en cours d’exécution.
Tables de requêtes dans un autre compte
Pour interroger les tables stockées dans le catalogue de données spécifié, exécutez une commande similaire à l'exemple suivant.
Hive :
SELECT * FROM `demodb.tab1` LIMIT 5;
Spark :
spark.sql("SELECT * FROM `demodb`.tt1 LIMIT 5").show()
- Sujets
- Analytics
- Balises
- Amazon EMR
- Langue
- Français

Contenus pertinents
- demandé il y a un an
- demandé il y a 2 mois