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
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 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$1 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
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 do usuário do Amazon Athena.
Especificando o AWS Glue Data Catalog como metastore
Você pode especificar o AWS Glue Data Catalog como metastore usando a API AWS Management Console 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.
permissões do IAM
O perfil da EC2 instância 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
Se você usar o perfil de EC2 instância padrão 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 de EC2 instância e permissões 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 Função de serviço para EC2 instâncias de cluster (perfil de EC2 instância) no Guia de gerenciamento do Amazon EMR.
Permissões para criptografar e descriptografar o Glue Data Catalog AWS
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 declaração à política de permissões anexada ao seu perfil de EC2 instância.
[ { "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
" } ] } ]
Para obter mais informações sobre a criptografia do AWS Glue Data Catalog, consulte Criptografando seu catálogo de dados no AWS Glue Developer Guide.
Permissões baseadas em recursos
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 no Guia do desenvolvedor do AWS Glue.
Ao usar políticas baseadas em recursos para limitar o acesso ao AWS Glue a partir do Amazon EMR, o principal que você especifica na política de permissões deve ser o ARN da função associado ao perfil da EC2 instância 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 EC2 instâncias de cluster, EMR_EC2_DefaultRole
como aPrincipal
, 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 Catálogo de Dados do AWS Glue
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 ahive.aux.jars.path
propriedade, que adiciona auxiliar JARs ao classpath do Hive. -
Não há suporte para transações do Hive
. 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 propriedadehive.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 aLOCATION
no Amazon S3 ao criar uma tabela do Hive usando o Glue. AWS Como alternativa, você pode usar a classificação de configuraçãohive-site
para especificar um local no Amazon S3 parahive.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 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
são têm suporte para o emr-5.31.0 e versões posteriores. O uso da autorização do Hive
não é compatível. Como alternativa, considere usar as Políticas baseadas em recursos do AWS Glue. Para obter mais informações, consulte Usar políticas baseadas em recursos para o Amazon EMR Access to AWS Glue Data Catalog. Não há suporte para restrições do Hive
. A Otimização baseada em custos no 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
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çãohive-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.