Usando o Presto com o AWS Glue Data Catalog - Amazon EMR

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 Presto com o AWS Glue Data Catalog

Usando a EMR versão 5.10.0 da Amazon e posterior, você pode especificar o AWS Glue Data Catalog como a metastore padrão do Hive para o Presto. Recomendamos essa configuração quando você precisa de um metastore persistente ou de um metastore compartilhado por diferentes clusters, serviços, aplicações ou Contas da AWS.

AWS O Glue é um serviço totalmente gerenciado de extração, transformação e carregamento (ETL) 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, com integração com a Amazon, Amazon EMR Redshift, RDS 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 ETL tarefas do AWS Glue 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 USD $1 por cada 100.000 objetos acima 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 a 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 o AWS Management Console, AWS CLI, ou Amazon. EMR API Ao usar o CLI ouAPI, você usa a classificação de configuração do Presto 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 novo console
  1. Faça login no AWS Management Console e abra o EMR console da Amazon em https://console.aws.amazon.com/emr.

  2. EC2Em EMRAtivado, no painel de navegação esquerdo, escolha Clusters e, em seguida, escolha Criar cluster.

  3. Em Pacote de aplicações, escolha Presto.

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

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

  6. Para iniciar o cluster, escolha Criar cluster.

CLI
Para especificar o AWS Glue Data Catalog como o metastore padrão do Hive usando o AWS CLI

Para obter exemplos de como especificar as classificações de configuração a seguir ao criar um cluster, consulte Configurar aplicações.

Amazon EMR 5.16.0 e versões posteriores

  • Defina a hive.metastore propriedade glue como mostrado no JSON exemplo a seguir.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

    Para especificar um catálogo de dados em outro Conta da AWS, adicione a hive.metastore.glue.catalogid propriedade conforme mostrado no JSON exemplo a seguir. Substitua acct-id pela conta da AWS do Catálogo de Dados. O uso de um catálogo de dados em outro não Conta da AWS está disponível usando a Amazon EMR versão 5.15.0 e anteriores.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue", "hive.metastore.glue.catalogid": "acct-id" } } ]

    Amazon EMR 5.10.0 a 5.15.0

    Defina a hive.metastore.glue.datacatalog.enabled propriedade comotrue, conforme mostrado no JSON exemplo a seguir:

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore.glue.datacatalog.enabled": "true" } } ]

    Amazon EMR 6.1.0 e versões posteriores usando Presto SQL (Trino)

    A partir da EMR versão 6.1.0, o Presto SQL também oferece suporte ao Glue como metastore padrão do Hive. Use a classificação prestosql-connector-hive de configuração e defina a hive.metastore propriedade comoglue, conforme mostrado no JSON exemplo a seguir.

    EMRAs versões 6.4.0 e posteriores da Amazon usam o novo nome Trino em vez de Presto. SQL Se você usa o Trino, substitua prestosql-connector-hive na seguinte classificação de configuração por trino-connector-hive.

    [ { "Classification": "prestosql-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

Para alternar entre metastores em um cluster de execução prolongada, você pode definir esses valores manualmente, conforme apropriado para a sua versão, conectando-se ao nó principal, editando os valores de propriedade diretamente no arquivo /etc/presto/conf/catalog/hive.properties e reiniciando o servidor Presto (sudo restart presto-server). Se você usar esse método com o Amazon EMR 5.15.0 e versões anteriores, verifique se ele hive.table-statistics-enabled está definido como. false Essa configuração não é necessária ao usar versões 5.16.0 e posteriores. No entanto, as estatísticas de tabela e de partição não são compatíveis.

IAMpermissões

O perfil da EC2 instância de um cluster deve ter IAM permissões para as 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ê usa o perfil de EC2 instância padrão da AmazonEMR, nenhuma ação é 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 Amazon EMR Management Guide.

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 na AmazonEMR, o AWS 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 na AmazonEMR, o principal que você especifica na política de permissões deve ser a função ARN associada ao perfil de EC2 instância especificado quando um cluster é criado. Por exemplo, para uma política baseada em recursos anexada a um catálogo, você pode especificar a função da função de serviço padrão ARN para instâncias de clusterEC2, EMR_EC2_DefaultRole como oPrincipal, usando o formato mostrado no exemplo a seguir:

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

A ferramenta acct-id pode ser diferente do ID da conta AWS Glue. Isso permite o acesso a partir de EMR clusters em contas diferentes. 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 Presto:

  • 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 emHDFS. 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 HDFS armazenamento é transitório, se o cluster for encerrado, os dados da tabela serão perdidos e a tabela deverá 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 HDFS local e o cluster que a criou ainda estiver em execução, você poderá atualizar a localização da tabela para o Amazon S3 a partir do AWS 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 catálogo de dados Amazon EMR Access to AWS Glue.