Come posso utilizzare Hive e Spark su Amazon EMR per eseguire query sy un Catalogo dati di un altro account?
Desidero utilizzare Apache Hive e Apache Spark per accedere al Catalogo dati AWS Glue di un altro account AWS in Amazon EMR ed eseguire query.
Breve descrizione
Per accedere dinamicamente al Catalogo dati in diversi account, specifica la proprietà aws.glue.catalog.separator nelle configurazioni di Hive o Spark. Puoi anche specificare la proprietà hive.metastore.glue.catalogid nelle configurazioni per accedere a un Catalogo dati specifico in un altro account.
Risoluzione
Concedi l'accesso multi-account ad AWS Glue. Assicurati che il bucket Amazon Simple Storage Service (Amazon S3) a cui fanno riferimento le tabelle AWS Glue sia configurato per l'accesso multi-account. Per ulteriori informazioni, consulta How do I set up cross-account access for EMR File System? (Come posso configurare l'accesso multi-account per il file system di EMR?)
Accedi dinamicamente al Catalogo dati in diversi account
Applica le modifiche di configurazione a un nuovo cluster
Quando avvii un cluster EMR, aggiungi un oggetto di configurazione simile al seguente esempio. Per ulteriori informazioni, consulta Configurazione delle applicazioni durante la creazione di 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" } } ]
Applica modifiche di configurazione a un cluster in esecuzione
Completa i seguenti passaggi:
- Apri la console Amazon EMR.
- Nell'elenco dei cluster, in ID cluster, scegli il cluster attivo che desideri riconfigurare.
- Nella pagina dei dettagli del cluster, scegli la scheda Applicazioni.
- In Configurazioni del gruppo di istanze, seleziona il gruppo di istanze, quindi scegli Riconfigura.
- Scegli Aggiungi nuova configurazione, quindi inserisci le seguenti informazioni:
In Classificazione, inserisci hive-site.
In Proprietà, inserisci aws.glue.catalog.separator.
In Valore, inserisci /.
In Classificazione, inserisci hive-site.
In Proprietà, inserisci hive.metastore.client.factory.class.
In Valore, inserisci com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory.
In Classificazione, inserisci spark-hive-site.
In Proprietà, inserisci aws.glue.catalog.separator.
In Valore, inserisci /.
In Classificazione, inserisci spark-hive-site.
In Proprietà, inserisci hive.metastore.client.factory.class.
In Valore, inserisci com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory. - Seleziona Apply this configuration to all active instance groups (Applica questa configurazione a tutti i gruppi di istanze attivi), quindi scegli Salva le modifiche. Per maggiori informazioni, consulta Riconfigurazione di un gruppo di istanze in un cluster in esecuzione.
Esegui query su tabelle in un altro account
Nota: quando esegui processi Spark in Amazon EMR versione 6.5, passa la proprietà di configurazione spark.sql.catalogImplementation=hive. Per ulteriori informazioni, consulta Dynamically loading Spark properties (Caricamento dinamico delle proprietà di Spark) sul sito web Apache Spark.
Per eseguire query su una tabella che si trova in un account diverso, specifica il numero dell'account nella query. Il numero dell'account corrisponde all'ID del Catalogo. Ad esempio, per eseguire query su demodb.tab1 nell'account 111122223333, esegui questo comando.
Hive:
SELECT * FROM `111122223333/demodb.tab1` LIMIT 5;
Spark:
spark.sql("SELECT * FROM `111122223333/demodb`.tt1 LIMIT 5").show()
Esegui il comando Spark precedente nello script spark-submit o come nella shell del notebook.
Puoi anche unire le tabelle di due Cataloghi.
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()
Esegui il comando Spark precedente nello script spark-submit o come nella shell del notebook.
Accedi a un Catalogo dati specifico in un altro account
Applica le modifiche di configurazione a un nuovo cluster
Quando avvii un cluster EMR, aggiungi un oggetto di configurazione simile al seguente esempio. Per ulteriori informazioni, consulta Configurazione delle applicazioni durante la creazione di 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" } } ]
Applica modifiche di configurazione a un cluster in esecuzione
Completa i seguenti passaggi:
- Apri la console Amazon EMR.
- Nell'elenco dei cluster, in ID cluster, scegli il cluster attivo che desideri riconfigurare.
- Nella pagina dei dettagli del cluster, scegli la scheda Applicazioni.
- In Configurazioni del gruppo di istanze, seleziona il gruppo di istanze, quindi scegli Riconfigura.
- Scegli Aggiungi nuova configurazione, quindi inserisci le seguenti informazioni:
In Classificazione, inserisci hive-site.
In Proprietà, inserisci hive.metastore.glue.catalogid.
In Valore, inserisci account-id.
In Classificazione, inserisci hive-site.
In Proprietà, inserisci hive.metastore.client.factory.class.
In Valore, inserisci com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory.
In Classificazione, inserisci spark-hive-site.
In Proprietà, inserisci hive.metastore.glue.catalogid.
In Valore, inserisci account-id.
In Classificazione, inserisci spark-hive-site.
In Proprietà, inserisci hive.metastore.client.factory.class.
In Valore, inserisci com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory. - Seleziona Apply this configuration to all active instance groups (Applica questa configurazione a tutti i gruppi di istanze attivi), quindi scegli Salva le modifiche. Per maggiori informazioni, consulta Riconfigurazione di un gruppo di istanze in un cluster in esecuzione.
Esegui query su tabelle in un altro account
Per eseguire query su tabelle archiviate nel Catalogo dati specificato, esegui un comando simile all'esempio seguente.
Hive:
SELECT * FROM `demodb.tab1` LIMIT 5;
Spark:
spark.sql("SELECT * FROM `demodb`.tt1 LIMIT 5").show()
- Argomenti
- Analytics
- Tag
- Amazon EMR
- Lingua
- Italiano
