Comment utiliser Hive et Spark sur Amazon EMR pour interroger un catalogue de données AWS Glue se trouvant sur un autre compte AWS ?
Je veux accéder au catalogue de données AWS Glue d'un autre compte et l'interroger en utilisant Apache Hive et Apache Spark dans Amazon EMR.
Brève description
Vous pouvez accéder dynamiquement au catalogue de données dans différents comptes en spécifiant la propriété aws.glue.catalog.separator dans vos configurations Hive ou Spark. En outre, vous pouvez accéder à un catalogue de données spécifique dans un autre compte en spécifiant la propriété hive.metastore.glue.catalogid dans vos configurations Hive ou Spark.
Résolution
Si vous n'avez pas accordé d'accès inter-comptes à AWS Glue, suivez les étapes de la section Autoriser l'accès inter-comptes pour le configurer. Assurez-vous que le compartiment Amazon Simple Storage Service (Amazon S3) vers lequel pointent les tables AWS Glue est configuré pour l'accès inter-comptes. Pour de plus amples informations, consultez la section Comment configurer l'accès inter-compte pour Amazon EMRFS ?
Accédez dynamiquement 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'objet suivant. Pour de plus amples informations, consultez la section Configuration 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" } }]
Appliquez les modifications de configuration à un cluster en cours
- Ouvrez la console Amazon EMR.
- Dans la liste des clusters, sous ID de cluster, choisissez le cluster actif que vous souhaitez reconfigurer.
- Sur la page de détails du cluster, sélectionnez l'onglet Applications.
- Sur la page de détails des applications, faites défiler l'écran vers le bas jusqu'à Configurations des groupes d'instances.
- Sélectionnez le groupe d'instances, puis choisissez Reconfigurer.
- Dans l'écran suivant, choisissez Ajouter une nouvelle configuration, puis saisissez les informations suivantes :
Pour Classification: hive-site
Pour Property (Propriété) : aws.glue.catalog.separator
Pour Value (Valeur) : /
Pour Classification: hive-site
Pour la propriété : hive.metastore.client.factory.class
Pour la valeur : com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveclientFactory
Pour Classification: spike-hive-site
Pour Property (Propriété) : aws.glue.catalog.separator
Pour Value (Valeur) : /
Pour Classification: spike-hive-site
Pour la propriété : hive.metastore.client.factory.class
Pour la valeur : com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveclientFactory - Cochez Appliquer cette configuration à tous les groupes d'instances actifs, puis choisissez Enregistrer les modifications. Pour plus d'informations, consultez Reconfiguration d'un groupe d'instances dans un cluster en cours d'exécution.
Tables de requêtes dans un autre compte AWS
Remarque : Dans Amazon EMR 6.5, transmettez la propriété de configuration spark.sql.catalogImplementation=HIVE lors de l'exécution de tâches Spark. Pour plus d'informations, consultez la section Chargement dynamique des propriétés Spark dans la documentation d'Apache Spark.
Pour interroger une table qui se trouve dans un autre compte AWS, spécifiez le numéro de compte dans la requête. Le numéro de compte est l'ID de catalogue. Par exemple, pour interroger demodb.tab1 dans le compte 111122223333 dans Hive, exécutez la commande suivante :
SELECT * FROM `111122223333/demodb.tab1` LIMIT 5;
Exemple Spark (exécutez ceci dans le script spark-submit ou en tant que commande shell de bloc-notes) :
spark.sql("SELECT * FROM `111122223333/demodb`.tt1 LIMIT 5").show()
Vous pouvez également joindre des tables dans deux catalogues.
Exemple Hive :
SELECT * FROM `111122223333/demodb.tab1` t1 INNER JOIN `444455556666/demodb.tab2` t2 ON t1.col1 = t2.col2
Exemple Spark (exécutez ceci dans le script spark-submit ou en tant que commande shell de bloc-notes) :
spark.sql(SELECT * FROM `111122223333/demodb.tab1` t1 INNER JOIN `444455556666/demodb.tab2` t2 ON t1.col1 = t2.col2).show()
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'objet suivant. Pour de plus amples informations, consultez la section Configuration 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" } }]
Appliquez les modifications de configuration à un cluster en cours
- Ouvrez la console Amazon EMR.
- Dans la liste des clusters, sous ID de cluster, choisissez le cluster actif que vous souhaitez reconfigurer.
- Sur la page de détails du cluster, sélectionnez l'onglet Applications.
- Sur la page de détails des applications, faites défiler l'écran vers le bas jusqu'à Configurations des groupes d'instances.
- Sélectionnez le groupe d'instances, puis choisissez Reconfigurer
- Dans l'écran suivant, choisissez Ajouter une nouvelle configuration, puis saisissez les informations suivantes :
Pour Classification: hive-site
Pour la propriété : hive.metastore.glue.catalogid
Pour la valeur : account-id
Pour Classification: hive-site
Pour la propriété : hive.metastore.client.factory.class
Pour la valeur : com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveclientFactory
Pour Classification: spike-hive-site
Pour la propriété : hive.metastore.glue.catalogid
Pour la valeur : account-id
Pour Classification: spike-hive-site
Pour la propriété : hive.metastore.client.factory.class
Pour la valeur : com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveclientFactory - Cochez Appliquer cette configuration à tous les groupes d'instances actifs, puis choisissez Enregistrer les modifications. Pour de plus amples informations, consultez Reconfigurer un groupe d'instances dans un cluster en cours d'exécution.
Tables de requêtes dans un autre compte AWS
Pour interroger les tables stockées dans le catalogue de données AWS Glue spécifié, vous pouvez exécuter les commandes suivantes. Par exemple, pour interroger demodb.tab1 :
Dans Hive, exécutez la commande suivante :
SELECT * FROM `demodb.tab1` LIMIT 5;
Exemple Spark (exécutez ceci dans le script spark-submit ou en tant que commande shell de bloc-notes) :
spark.sql("SELECT * FROM `demodb`.tt1 LIMIT 5").show()
Contenus pertinents
- demandé il y a 9 moislg...
- demandé il y a 6 moislg...
- demandé il y a un anlg...
- demandé il y a 7 jourslg...
- demandé il y a 7 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans