View a markdown version of this page

Utilizzo di AWS Glue Data Catalog come metastore per Hive - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di AWS Glue Data Catalog come metastore per Hive

Utilizzando Amazon EMR versione 5.8.0 o successiva, puoi configurare Hive per utilizzare Glue Data Catalog come metastore. AWS Si consiglia questa configurazione quando si richiede un metastore persistente o un metastore condiviso da diversi cluster, servizi e applicazioni o account AWS .

AWS Glue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito che rende semplice ed economico classificare i dati, pulirli, arricchirli e spostarli in modo affidabile tra vari archivi di dati. Il AWS Glue Data Catalog fornisce un repository di metadati unificato su una varietà di fonti e formati di dati, integrandosi con Amazon EMR, Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena e qualsiasi applicazione compatibile con il metastore Apache Hive. AWS I crawler Glue possono dedurre automaticamente lo schema dai dati di origine in Amazon S3 e archiviare i metadati associati nel Data Catalog. Per ulteriori informazioni sul Data Catalog, consulta Population the Glue Data Catalog nella AWS Glue Developer Guide. AWS

Per AWS Glue si applicano costi separati. È prevista una tariffa mensile per l'archiviazione e l'accesso ai metadati nel Data Catalog, una tariffa oraria fatturata al minuto per i job ETL di AWS Glue e il runtime del crawler e una tariffa oraria fatturata al minuto per ogni endpoint di sviluppo a cui è stato assegnato il provisioning. Il Data Catalog consente di archiviare fino a un milione di oggetti senza costi aggiuntivi. Se intendi archiviare più di un milione di oggetti, ti verrà addebitato 1 USD per ogni 100.000 oggetti oltre il milione. Un oggetto nel Data Catalog può essere una tabella, una partizione o un database. Per ulteriori informazioni, consulta Prezzi di Glue.

Importante

Se hai creato tabelle utilizzando Amazon Athena o Amazon Redshift Spectrum prima del 14 agosto 2017, i database e le tabelle vengono archiviati in un Athena-managed catalogo separato dal Glue Data Catalog. AWS Per integrare Amazon EMR con queste tabelle, devi eseguire l'aggiornamento al AWS Glue Data Catalog. Per ulteriori informazioni, consulta Upgrade to the AWS Glue Data Catalog nella Amazon Athena User Guide.

Specificare AWS Incolla Data Catalog come metastore

Puoi specificare il AWS Glue Data Catalog come metastore utilizzando l'API Console di gestione AWS AWS CLI, o Amazon EMR. Quando si utilizza la CLI o l'API, è possibile utilizzare la classificazione di configurazione per Hive per specificare un Data Catalog. Inoltre, con Amazon EMR 5.16.0 e versioni successive, puoi utilizzare la classificazione della configurazione per specificare un catalogo di dati in un altro. Account AWS Quando utilizzi la console, puoi specificare il Data Catalog utilizzando Advanced Options (Opzioni avanzate) o Quick Options (Opzioni rapide).

Console
Per specificare AWS Incolla Data Catalog come metastore Hive con la console
  1. Accedi a e apri Console di gestione AWS la console Amazon EMR all'indirizzo. https://console.aws.amazon.com/emr

  2. In EMR on EC2 (EMR su EC2), nel riquadro di navigazione a sinistra, scegli Clusters (Cluster) e seleziona Create cluster (Crea cluster).

  3. In Application bundle, (Bundle dell'applicazione), scegli Core Hadoop, HBase o Custom (Personalizzato). Se personalizzi il cluster, assicurati di selezionare Hive o HCatalog come una delle tue applicazioni.

  4. In Impostazioni Catalogo dati AWS Glue, seleziona la casella di controllo Utilizza per i metadati delle tabelle Hive.

  5. Scegli qualsiasi altra opzione applicabile al cluster.

  6. Per avviare il cluster, scegli Create cluster (Crea cluster).

CLI
Per specificare AWS Incolla Data Catalog come metastore Hive con AWS CLI

Per ulteriori informazioni sulla specifica di una classificazione di configurazione utilizzando l'API AWS CLI and EMR, vedere. Configurazione delle applicazioni

  • Specificare il valore per hive.metastore.client.factory.class utilizzando la classificazione di configurazione hive-site come mostrato nell'esempio seguente.

    [ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } } ]

    Nelle versioni di rilascio di EMR 5.28.0, 5.28.1, 5.29.0 o 6.x, se stai creando un cluster utilizzando il AWS Glue Data Catalog come metastore, imposta su. hive.metastore.schema.verification false Ciò impedisce a Hive e HCatalog di convalidare lo schema del metastore rispetto a MySQL. Senza questa configurazione, il gruppo di istanze primarie verrà sospeso dopo la riconfigurazione su Hive o HCatalog.

    [ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.schema.verification": "false" } } ]

    Se disponi già di un cluster nelle versioni di rilascio EMR 5.28.0, 5.28.1 o 5.29.0, puoi impostare il gruppo di istanze primarie hive.metastore.schema.verification su false con le seguenti informazioni:

    Classification = hive-site Property = hive.metastore.schema.verification Value = false

    Per specificare un Data Catalog in un AWS account diverso, aggiungete la proprietà come mostrato nell'esempio seguente. hive.metastore.glue.catalogid Sostituisci acct-id con l'account AWS di Data Catalog.

    [ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.schema.verification": "false", "hive.metastore.glue.catalogid": "acct-id" } } ]

autorizzazioni IAM

Il profilo dell'istanza EC2 per un cluster deve disporre delle autorizzazioni IAM per le azioni AWS Glue. Inoltre, se abiliti la crittografia per gli oggetti AWS Glue Data Catalog, al ruolo deve essere consentito anche di crittografare, decrittografare e generare i dati utilizzati per la crittografia. AWS KMS key

Autorizzazioni per AWS Azioni di incollaggio

Se utilizzi il profilo dell'istanza EC2 di default per Amazon EMR, non è richiesta alcuna operazione. La policy AmazonElasticMapReduceforEC2Role gestita allegata a EMR_EC2_DefaultRole consente tutte le azioni AWS Glue necessarie. Tuttavia, se si specificano un profilo e delle autorizzazioni di istanza EC2 personalizzati, è necessario configurare le azioni AWS Glue appropriate. Utilizza la policy AmazonElasticMapReduceforEC2Role gestita come punto di partenza. Per ulteriori informazioni, consulta Ruolo di servizio per le istanze EC2 del cluster (profilo dell'istanza EC2) nella Guida alla gestione di Amazon EMR.

Autorizzazioni per la crittografia e la decrittografia AWS Catalogo dati Glue

Il tuo profilo dell'istanza ha bisogno dell'autorizzazione per crittografare e decrittare i dati utilizzando la tua chiave. Non è necessario configurare queste autorizzazioni se si applicano entrambe le seguenti istruzioni:

  • È possibile abilitare la crittografia per gli oggetti AWS Glue Data Catalog utilizzando le chiavi gestite per Glue. AWS

  • Si utilizza un cluster che si trova nello Account AWS stesso del AWS Glue Data Catalog.

In caso contrario, devi aggiungere la istruzione seguente alla policy delle autorizzazioni collegata al profilo dell'istanza EC2.

Per ulteriori informazioni sulla crittografia di AWS Glue Data Catalog, consulta Encrypting your data catalog nella AWS Glue Developer Guide.

Resource-based autorizzazioni

Se utilizzi AWS Glue insieme a Hive, Spark o Presto in Amazon EMR, AWS Glue supporta policy basate sulle risorse per controllare l'accesso alle risorse del Data Catalog. Queste risorse includono tabelle, database, connessioni e funzioni definite dall'utente. Per ulteriori informazioni, consulta Policy sulle risorse AWS Glue nella Guida per gli sviluppatori di AWS Glue.

Quando si utilizzano policy basate sulle risorse per limitare l'accesso a AWS Glue dall'interno di Amazon EMR, il principale specificato nella policy delle autorizzazioni deve essere il ruolo ARN associato al profilo dell'istanza EC2 specificato al momento della creazione di un cluster. Ad esempio, per una policy basata sulle risorse allegata a un catalogo, puoi specificare il ruolo ARN per il ruolo di servizio predefinito per le istanze EC2 del clusterPrincipal, EMR_EC2_DefaultRole come, utilizzando il formato mostrato nell'esempio seguente:

arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole

acct-idPuò essere diverso dall'ID dell'account Glue. AWS Ciò consente l'accesso da cluster EMR in account diversi. Puoi specificare più entità principali, ognuna da un account diverso.

Considerazioni sull'utilizzo AWS Catalogo dati Glue

Considerate i seguenti elementi quando utilizzate il AWS Glue Data Catalog come metastore con Hive:

  • L'aggiunta di JAR ausiliari tramite la shell Hive non è supportata. Per risolvere il problema, è possibile usare la hive-site classificazione di configurazione per impostare la proprietà hive.aux.jars.path, che aggiunge JAR ausiliarie percorso della classe Hive.

  • Le transazioni Hive non sono supportate.

  • La ridenominazione delle tabelle dall'interno di AWS Glue non è supportata.

  • Quando si crea una tabella Hive senza specificare una LOCATION, i dati nella tabella vengono archiviati nella posizione specificata dalla proprietà hive.metastore.warehouse.dir. Per impostazione predefinita, questa è una posizione in HDFS. Se un altro cluster necessita di accedere alla tabella, non ci riuscirà a meno che non disponga di autorizzazioni adeguate per il cluster che ha creato la tabella. Inoltre, poiché l'archiviazione HDFS è transitoria, se il cluster viene terminato, i dati della tabella vanno persi e la tabella deve essere ricreata. Ti consigliamo di specificare LOCATION a in Amazon S3 quando crei una tabella Hive usando Glue. AWS In alternativa, puoi utilizzare la classificazione di configurazione hive-site per specificare una posizione in Amazon S3 per hive.metastore.warehouse.dir, che si applica a tutte le tabelle Hive. Se una tabella viene creata in una posizione HDFS e il cluster che l'ha creata è ancora in esecuzione, puoi aggiornare la posizione della tabella su Amazon S3 dall'interno di Glue. AWS Per ulteriori informazioni, consulta Lavorare con le tabelle sulla console AWS Glue nella Glue Developer AWS Guide.

  • I valori delle partizioni contenenti virgolette e apostrofi non sono supportati, ad esempio PARTITION (owner="Doe's")..

  • Le statistiche di colonna sono supportate per emr-5.31.0 e versioni successive.

  • L'utilizzo dell'autorizzazione Hive non è supportato. In alternativa, prendi in considerazione l'utilizzo di AWS Glue Resource-Based Policies. Per ulteriori informazioni, consulta Use Resource-Based Policies for Amazon EMR Access to AWS Glue Data Catalog.

  • I vincoli Hive non sono supportati.

  • Cost-based L'ottimizzazione in Hive non è supportata.

  • L'impostazione di hive.metastore.partition.inherit.table.properties non è supportata.

  • L'utilizzo delle seguenti costanti metastore non è supportato: BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION.

  • Quando si utilizza un'espressione predicato, i valori espliciti devono trovarsi sul lato destro dell'operatore di confronto, altrimenti le query potrebbero avere esito negativo.

    • Corretto: SELECT * FROM mytable WHERE time > 11

    • Errato: SELECT * FROM mytable WHERE 11 > time

  • Amazon EMR versioni 5.32.0 e 6.3.0 e successive supportano l'utilizzo di funzioni definite dall'utente (UDF) nelle espressioni predicate. Quando usi versioni precedenti, le tue query potrebbero fallire a causa del modo in cui Hive tenta di ottimizzare la relativa esecuzione.

  • Le tabelle temporali non sono supportate.

  • Consigliamo di creare tabelle utilizzando le applicazioni tramite Amazon EMR anziché crearle direttamente con AWS Glue. La creazione di una tabella tramite AWS Glue può causare la mancanza di campi obbligatori e causare eccezioni nelle query.

  • In EMR 5.20.0 o versioni successive, l'eliminazione parallela delle partizioni è abilitata automaticamente per Spark e Hive quando AWS Glue Data Catalog viene utilizzato come metastore. Questa modifica riduce significativamente i tempi di pianificazione delle query eseguendo più richieste in parallelo per recuperare le partizioni. Il numero totale di segmenti che è possibile eseguire contemporaneamente è compreso tra 1 e 10. Il valore di default è 5, che è l'impostazione consigliata. Puoi modificare questa impostazione specificando la proprietà aws.glue.partition.num.segments nella classificazione di configurazione hive-site. Se si verifica una limitazione, è possibile disattivare la funzione modificando il valore su 1. Per ulteriori informazioni, consulta Struttura del segmento AWS Glue.