

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando o AWS Glue Data Catalog como metastore para o Hive
<a name="emr-hive-metastore-glue"></a>

Usando o Amazon EMR versão 5.8.0 ou posterior, você pode configurar o Hive para usar o AWS Glue Data Catalog como seu metastore. Recomendamos essa configuração quando você precisa de um metastore persistente ou de um metastore compartilhado por diferentes clusters, serviços e aplicativos ou contas da AWS .

AWS O Glue é um serviço de extração, transformação e carregamento (ETL) totalmente gerenciado que torna simples e econômico categorizar seus dados, limpá-los, enriquecê-los e movê-los de forma confiável entre vários armazenamentos de dados. O AWS Glue Data Catalog fornece um repositório unificado de metadados em uma variedade de fontes e formatos de dados, integrando-se ao Amazon EMR, bem como ao Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena e qualquer aplicativo compatível com o metastore Apache Hive. AWS Os rastreadores do Glue podem inferir automaticamente o esquema dos dados de origem no Amazon S3 e armazenar os metadados associados no catálogo de dados. Para obter mais informações sobre o Catálogo de Dados, consulte [Preenchendo o Catálogo de Dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) no *Guia do Desenvolvedor do AWS Glue*.

Taxas separadas se aplicam ao AWS Glue. Há uma taxa mensal para armazenar e acessar os metadados no Catálogo de Dados, uma taxa horária cobrada por minuto pelas tarefas do AWS Glue ETL e pelo tempo de execução do rastreador, e uma taxa horária cobrada por minuto para cada endpoint de desenvolvimento provisionado. O Catálogo de Dados permite o armazenamento de até um milhão de objetos gratuitamente. Se você armazenar mais de um milhão de objetos, será cobrado uma taxa de USD\$11 por cada 100.000 objetos em mais de um milhão. Um objeto no Catálogo de Dados é uma tabela, uma partição ou um banco de dados. Para obter mais informações, consulte [Definição de preço do Glue](https://aws.amazon.com/glue/pricing).

**Importante**  
Se você criou tabelas usando o Amazon Athena ou o Amazon Redshift Spectrum antes de 14 de agosto de 2017, bancos de dados e tabelas são armazenados em um catálogo gerenciado pelo Athena, que é separado do Glue Data Catalog. AWS Para integrar o Amazon EMR a essas tabelas, você deve fazer o upgrade para o AWS Glue Data Catalog. Para obter mais informações, consulte [Atualização para o catálogo de dados AWS Glue no Guia](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) do usuário do *Amazon Athena*.

## Especificando o AWS Glue Data Catalog como metastore
<a name="emr-hive-glue-configure"></a>

Você pode especificar o AWS Glue Data Catalog como metastore usando a API Console de gerenciamento da AWS AWS CLI, ou Amazon EMR. Ao usar a CLI ou a API, você usa a classificação de configuração do Hive para especificar o Catálogo de Dados. Além disso, com o Amazon EMR 5.16.0 e versões posteriores, você pode usar a classificação de configuração para especificar um catálogo de dados em outro. Conta da AWS Ao usar o console, você pode especificar o Catálogo de Dados usando **Opções avançadas** ou **Opções rápidas**.

------
#### [ Console ]

**Para especificar o AWS Glue Data Catalog como o metastore do Hive com o console**

1. [Faça login no e abra Console de gerenciamento da AWS o console do Amazon EMR em https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. Em **EMR no EC2**, no painel de navegação esquerdo, escolha **Clusters** e depois **Criar cluster**.

1. **Em **Pacote de aplicativos**, escolha **Core Hadoop** ou Custom **HBase**.** Se você personalizar seu cluster, certifique-se de selecionar o Hive ou HCatalog como um dos seus aplicativos.

1. Em **Configurações do Catálogo de Dados do AWS Glue**, marque a caixa de seleção **Usar para metadados de tabelas do Hive**.

1. Escolha qualquer outra opção que se aplique ao cluster. 

1. Para iniciar o cluster, escolha **Criar cluster**.

------
#### [ CLI ]

**Para especificar o AWS Glue Data Catalog como o metastore do Hive com o AWS CLI**

Para obter mais informações sobre como especificar uma classificação de configuração usando a API AWS CLI e EMR, consulte. [Configurar aplicações](emr-configure-apps.md)
+ Especifique o valor para `hive.metastore.client.factory.class` usando a classificação de configuração `hive-site`, conforme mostrado neste exemplo:

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

  Nas versões 5.28.0, 5.28.1, 5.29.0 ou 6.x do EMR, se você estiver criando um cluster usando o AWS Glue Data Catalog como metastore, defina o. `hive.metastore.schema.verification` `false` Isso impede que o Hive and valide o esquema HCatalog do metastore em relação ao MySQL. Sem essa configuração, o grupo de instâncias primárias será suspenso após a reconfiguração no Hive ou. HCatalog 

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

  Se você já tiver um cluster na versão 5.28.0, 5.28.1 ou 5.29.0 do EMR, poderá definir o grupo de instâncias principais `hive.metastore.schema.verification` como `false` com as seguintes informações:

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

  Para especificar um catálogo de dados em uma AWS conta diferente, adicione a `hive.metastore.glue.catalogid` propriedade conforme mostrado no exemplo a seguir. Substitua `acct-id` pela conta da AWS do Catálogo de Dados.

  ```
  [
    {
      "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"
      }
    }
  ]
  ```

------

## permissões do IAM
<a name="emr-hive-glue-permissions"></a>

O perfil da instância EC2 de um cluster deve ter permissões do IAM para ações do AWS Glue. Além disso, se você habilitar a criptografia para objetos do AWS Glue Data Catalog, a função também deverá ter permissão para criptografar, descriptografar e gerar o AWS KMS key usado para criptografia.

### Permissões para ações do AWS Glue
<a name="emr-hive-glue-permissions-actions"></a>

Se você usar o perfil de instância padrão do EC2 para o Amazon EMR, nenhuma ação será necessária. A política `AmazonElasticMapReduceforEC2Role` gerenciada anexada ao `EMR_EC2_DefaultRole` permite todas as ações necessárias do AWS Glue. No entanto, se você especificar um perfil e permissões de instância EC2 personalizados, deverá configurar as ações apropriadas do AWS Glue. Use a política gerenciada `AmazonElasticMapReduceforEC2Role` como ponto de partida. Para obter mais informações, consulte [Perfil de serviço para instâncias do EC2 de cluster (perfil de instância do EC2)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) no *Guia de gerenciamento do Amazon EMR*.

### Permissões para criptografar e descriptografar o Glue Data Catalog AWS
<a name="emr-hive-glue-permissions-encrypt"></a>

O perfil de instância precisa de permissão para criptografar e descriptografar dados usando a chave. Você *não* precisa configurar essas permissões se as duas instruções a seguir se aplicarem:
+ Você ativa a criptografia para objetos do AWS Glue Data Catalog usando chaves gerenciadas para o AWS Glue.
+ Você usa um cluster que está no mesmo catálogo Conta da AWS de dados do AWS Glue.

Caso contrário, você deverá adicionar a seguinte instrução à política de permissões anexada ao perfil de instância do EC2. 

Para obter mais informações sobre a criptografia do AWS Glue Data Catalog, consulte [Criptografando seu catálogo de dados](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) no *AWS Glue Developer Guide*.

### Permissões baseadas em recursos
<a name="emr-hive-glue-permissions-resource"></a>

Se você usa o AWS Glue em conjunto com o Hive, o Spark ou o Presto no Amazon EMR AWS , o Glue oferece suporte a políticas baseadas em recursos para controlar o acesso aos recursos do catálogo de dados. Esses recursos incluem bancos de dados, tabelas, conexões e funções definidas pelo usuário. Para obter mais informações, consulte [Políticas baseadas em recursos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) no *Guia do desenvolvedor do AWS Glue*.

Ao usar políticas baseadas em recursos para limitar o acesso ao AWS Glue de dentro do Amazon EMR, o principal que você especifica na política de permissões deve ser o ARN da função associado ao perfil de instância do EC2 que é especificado quando um cluster é criado. Por exemplo, para uma política baseada em recursos anexada a um catálogo, você pode especificar o ARN da função para a função de serviço padrão para instâncias EC2 de cluster, *EMR\$1EC2\$1DefaultRole* como a`Principal`, usando o formato mostrado no exemplo a seguir:

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

*acct-id*Pode ser diferente do ID da conta AWS Glue. Isso possibilita o acesso de clusters do EMR em outras contas. Você pode especificar várias entidades principais, cada uma de uma conta diferente.

## Considerações ao usar o AWS Glue Data Catalog
<a name="emr-hive-glue-considerations-hive"></a>

Considere os seguintes itens ao usar o AWS Glue Data Catalog como metastore com o Hive:
+ A adição de auxiliares JARs usando o shell Hive não é suportada. Como solução alternativa, use a classificação de `hive-site` configuração para definir a `hive.aux.jars.path` propriedade, que adiciona auxiliar JARs ao classpath do Hive.
+ Não há suporte para [transações do Hive](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions).
+ Não há suporte para renomear tabelas de dentro do AWS Glue.
+ Quando você cria uma tabela do Hive sem especificar um `LOCATION`, os dados da tabela são armazenados no local especificado pela propriedade `hive.metastore.warehouse.dir`. Por padrão, esse é um local no HDFS. Se outro cluster precisar acessar a tabela, ele apresentará falha, a menos que tenha permissões adequadas para o cluster que criou a tabela. Além disso, como o armazenamento do HDFS é transitório, se o cluster for encerrado, os dados da tabela serão perdidos e a tabela precisará ser recriada. Recomendamos que você especifique a `LOCATION` no Amazon S3 ao criar uma tabela do Hive usando o Glue. AWS Como alternativa, você pode usar a classificação de configuração `hive-site` para especificar um local no Amazon S3 para `hive.metastore.warehouse.dir`, que se aplica a todas as tabelas do Hive. Se uma tabela for criada em um local do HDFS e o cluster que a criou ainda estiver em execução, você poderá atualizar o local da tabela para o Amazon S3 a partir AWS do Glue. Para obter mais informações, consulte Como [trabalhar com tabelas no console do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) no *Guia do desenvolvedor do AWS Glue*. 
+ Valores de partição contendo aspas e apóstrofos não são compatíveis, por exemplo, `PARTITION (owner="Doe's").`
+ [As estatísticas de coluna](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics) são têm suporte para o emr-5.31.0 e versões posteriores.
+ O uso da [autorização do Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization) não é compatível. Como alternativa, considere usar as [Políticas baseadas em recursos do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html). Para obter mais informações, consulte [Usar políticas baseadas em recursos para o Amazon EMR Access to AWS Glue](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html) Data Catalog.
+ Não há suporte para [restrições do Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Constraints).
+ A [Otimização baseada em custos no Hive](https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive) não é compatível.
+ A configuração de `hive.metastore.partition.inherit.table.properties` não é compatível. 
+ O uso das seguintes constantes de metastore não é compatível: `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 você usa uma expressão do predicado, os valores explícitos devem estar no lado direito do operador de comparação ou as consultas podem apresentar falha.
  + **Correto**: `SELECT * FROM mytable WHERE time > 11`
  + **Incorreto**: `SELECT * FROM mytable WHERE 11 > time`
+ As versões 5.32.0 e 6.3.0 e posteriores do Amazon EMR oferecem suporte ao uso de funções definidas pelo usuário () em expressões de predicados. UDFs Quando são usadas versões anteriores, suas consultas podem apresentar falha devido à forma como o Hive tenta otimizar a execução da consulta.
+ [Tabelas temporárias](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TemporaryTables) não são compatíveis.
+ Recomendamos criar tabelas usando aplicativos por meio do Amazon EMR em vez de criá-las diretamente usando o AWS Glue. Criar uma tabela por meio do AWS Glue pode fazer com que os campos obrigatórios sejam perdidos e causar exceções de consulta.
+ No EMR 5.20.0 ou posterior, a remoção paralela de partições é ativada automaticamente para Spark e Hive quando o AWS Glue Data Catalog é usado como metastore. Essa alteração reduz significativamente o tempo de planejamento de consultas ao executar várias solicitações em paralelo para recuperar partições. O número total de segmentos que podem ser executados simultaneamente varia entre 1 e 10. O valor padrão é 5, que é uma configuração recomendada. Você pode alterá-lo especificando a propriedade `aws.glue.partition.num.segments` na classificação de configuração `hive-site`. Se ocorrer controle de utilização, você poderá desativar o atributo alterando o valor para 1. Para obter mais informações, consulte a [Estrutura de segmentos do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-Segment).