Utilizzo del 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 del AWS Glue Data Catalog come metastore per Hive

Utilizzando Amazon EMR versione 5.8.0 o successiva, puoi configurare Hive per utilizzare AWS Glue Data Catalog come metastore. 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 di dati e formati di dati, che si integra con Amazon, Amazon, EMR Amazon Redshift, Redshift Spectrum, Athena e qualsiasi applicazione compatibile con il metastore Apache Hive. RDS AWS I Glue crawler 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 Populating the AWS Glue Data Catalog nella AWS Glue Developer Guide.

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 ETL lavori AWS Glue e il runtime del crawler e una tariffa oraria fatturata al minuto per ogni endpoint di sviluppo assegnato. Il Data Catalog consente di archiviare fino a un milione di oggetti senza costi aggiuntivi. Se memorizzi più di un milione di oggetti, ti viene addebitato USD 1 USD per ogni 100.000 oggetti oltre un 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 catalogo gestito da Athena, 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 l'aggiornamento al AWS Glue Data Catalog nella Guida per l'utente di Amazon Athena.

Specificare AWS Glue Data Catalog come metastore

Puoi specificare AWS Glue Data Catalog come metastore utilizzando AWS Management Console AWS CLI, o Amazon. EMR API Quando si utilizza CLI oAPI, si utilizza la classificazione di configurazione per Hive per specificare il Data Catalog. Inoltre, con Amazon EMR 5.16.0 e versioni successive, puoi utilizzare la classificazione di configurazione per specificare un catalogo 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 Glue Data Catalog come metastore Hive con la console
  1. Accedi a e apri la EMR console Amazon all'indirizzo https://console.aws.amazon.com/emr. AWS Management Console

  2. EC2Nel riquadro di navigazione a sinistra, scegli Clusters, quindi scegli Crea cluster. EMR

  3. In Application bundle, scegli Core Hadoop o Personalizzato. HBase 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 il AWS Glue Data Catalog come metastore Hive con AWS CLI

Per ulteriori informazioni su come specificare una classificazione di configurazione utilizzando and, vedere. AWS CLI EMR API 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 EMR rilascio 5.28.0, 5.28.1, 5.29.0 o 6.x, se stai creando un cluster utilizzando AWS Glue Data Catalog come metastore, imposta su. hive.metastore.schema.verification false Ciò impedisce a Hive e di convalidare lo schema del metastore rispetto a My. HCatalog SQL Senza questa configurazione, il gruppo di istanze primario 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 nella EMR versione 5.28.0, 5.28.1 o 5.29.0, puoi impostare il gruppo di istanze primario su con le seguenti informazioni: hive.metastore.schema.verification false

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

    Per specificare un catalogo dati in un AWS account diverso, aggiungete la hive.metastore.glue.catalogid proprietà come mostrato nell'esempio seguente. 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" } } ]

IAMautorizzazioni

Il profilo di EC2 istanza per un cluster deve disporre delle IAM autorizzazioni per le azioni AWS Glue. Inoltre, se abiliti la crittografia per gli oggetti di AWS Glue Data Catalog, al ruolo deve essere consentito anche di crittografare, decrittografare e generare ciò che AWS KMS key viene utilizzato per la crittografia.

Autorizzazioni per le azioni AWS Glue

Se utilizzi il profilo di EC2 istanza predefinito per AmazonEMR, non è richiesta alcuna azione. La politica AmazonElasticMapReduceforEC2Role gestita allegata a EMR_EC2_DefaultRole consente tutte le azioni AWS Glue necessarie. Tuttavia, se si specificano un profilo e le autorizzazioni dell'EC2istanza personalizzati, è necessario configurare le azioni AWS Glue appropriate. Utilizza la policy AmazonElasticMapReduceforEC2Role gestita come punto di partenza. Per ulteriori informazioni, consulta il ruolo del servizio per EC2 le istanze del cluster (profilo dell'EC2istanza) nella Amazon EMR Management Guide.

Autorizzazioni per la crittografia e la decrittografia di Glue Data Catalog AWS

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 di AWS Glue Data Catalog utilizzando chiavi gestite per AWS Glue.

  • Utilizzi un cluster che è Account AWS uguale al AWS Glue Data Catalog.

Altrimenti, è necessario aggiungere la seguente dichiarazione alla politica di autorizzazione allegata al profilo dell'EC2istanza.

[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:acct-id:key/12345678-1234-1234-1234-123456789012" } ] } ]

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

Autorizzazioni basate su risorse

Se utilizzi AWS Glue insieme a Hive, Spark o Presto in Amazon, EMR AWS Glue supporta politiche 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 politiche basate sulle risorse per limitare l'accesso a AWS Glue dall'interno di AmazonEMR, il principale specificato nella politica delle autorizzazioni deve essere il ruolo ARN associato al profilo dell'EC2istanza specificato al momento della creazione di un cluster. Ad esempio, per una politica basata sulle risorse allegata a un catalogo, puoi specificare il ruolo del ruolo di servizio predefinito ARN per le istanze del cluster, EC2 EMR_EC2_DefaultRole comePrincipal, utilizzando il formato illustrato nell'esempio seguente:

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

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

Considerazioni sull'utilizzo di AWS Glue Data Catalog

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

  • L'aggiunta di ausiliari JARs utilizzando la shell Hive non è supportata. Come soluzione alternativa, utilizzate la classificazione di hive-site configurazione per impostare la hive.aux.jars.path proprietà, che aggiunge elementi ausiliari al classpath di JARs 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, si tratta di una posizione inHDFS. 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é la HDFS memorizzazione è transitoria, se il cluster termina, i dati della tabella vengono persi e la tabella deve essere ricreata. Ti consigliamo di specificare LOCATION a in Amazon S3 quando crei una tabella Hive utilizzando 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 HDFS posizione e il cluster che l'ha creata è ancora in esecuzione, puoi aggiornare la posizione della tabella su Amazon S3 da AWS Glue. Per ulteriori informazioni, consulta Working with Tables on the AWS Glue Console nella AWS Glue Developer 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, puoi prendere in considerazione l'utilizzo di Policy basate sulle risorse AWS Glue. Per ulteriori informazioni, consulta Use Resource-Based Policies per Amazon Access EMR to AWS Glue Data Catalog.

  • I vincoli Hive non sono supportati.

  • L'ottimizzazione basata sui costi 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

  • EMRLe versioni di Amazon 5.32.0 e 6.3.0 e successive supportano l'uso di funzioni definite dall'utente (UDFs) nelle espressioni dei predicati. 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.

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

  • Nella versione EMR 5.20.0 o successiva, il pruning delle partizioni parallele è abilitato 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.