Apresentamos a automação do AWS Glue Knowledge Catalog para coleta de estatísticas de tabelas para melhorar o desempenho de consultas no Amazon Redshift e no Amazon Athena


O Catálogo de dados do AWS Glue agora automatiza a geração de estatísticas para novas tabelas. Essas estatísticas são integradas ao otimizador baseado em custos (CBO) do Espectro Amazon Redshift e Amazon Atenasresultando em melhor desempenho de consulta e possível economia de custos.

As consultas em grandes conjuntos de dados geralmente leem grandes quantidades de dados e executam operações complexas de junção em vários conjuntos de dados. Quando um mecanismo de consulta como Redshift Spectrum ou Athena processa a consulta, o CBO usa estatísticas de tabela para otimizá-la. Por exemplo, se o CBO souber o número de valores distintos em uma coluna da tabela, ele poderá escolher a ordem e a estratégia de junção ideais. Estas estatísticas devem ser recolhidas previamente e devem ser mantidas atualizadas para refletir o estado mais recente dos dados.

Anteriormente, o Catálogo de Dados suportava a coleta de estatísticas de tabela usadas pelo CBO para Redshift Spectrum e Athena para tabelas com formatos Parquet, ORC, JSON, ION, CSV e XML. Introduzimos esse recurso e seus benefícios de desempenho em Melhore o desempenho das consultas usando estatísticas em nível de coluna do AWS Glue Knowledge Catalog. Além disso, o Catálogo de Dados também oferece suporte a tabelas Apache Iceberg. Também abordamos isso em detalhes em Acelere o desempenho das consultas com estatísticas do Apache Iceberg no AWS Glue Knowledge Catalog.

Anteriormente, a criação de estatísticas para tabelas Iceberg no Knowledge Catalog exigia que você monitorasse e atualizasse continuamente as configurações de suas tabelas. Você teve que fazer trabalho pesado indiferenciado para fazer o seguinte:

  • Descubra novas tabelas com formatos específicos de tabelas de dados (como Parquet, JSON, CSV, XML, ORC, ION) e formatos específicos de tabelas de dados transacionais, como Iceberg e seus caminhos de bucket individuais
  • Determinar e configurar tarefas de computação com base na estratégia de varredura (porcentagem de amostragem e programações)
  • Configurar Gerenciamento de identidade e acesso da AWS (IAM) e Formação do Lago AWS funções para tarefas específicas para fornecer Serviço de armazenamento simples da Amazon (Amazon S3) acesso, Amazon CloudWatch registros, Serviço de gerenciamento de chaves da AWS Chaves (AWS KMS) para criptografia do CloudWatch e políticas de confiança
  • Configure sistemas de notificação de eventos para entender as mudanças nos information lakes
  • Configurar estratégias específicas de melhoria de desempenho e armazenamento de consultas baseadas em configuração do otimizador
  • Configure um agendador ou crie suas próprias tarefas de computação baseadas em eventos com configuração e desmontagem

Agora, o Catálogo de Dados permite gerar estatísticas automaticamente para tabelas atualizadas e criadas com uma configuração de catálogo única. Você pode começar selecionando o catálogo padrão no console do Lake Formation e habilitando as estatísticas da tabela na guia de configuração de otimização da tabela. À medida que novas tabelas são criadas, o número de valores distintos (NDVs) é coletado para tabelas Iceberg, e estatísticas adicionais, como número de nulos, comprimento máximo, mínimo e médio, são coletadas para outros formatos de arquivo, como Parquet. O Redshift Spectrum e o Athena podem usar as estatísticas atualizadas para otimizar consultas, usando otimizações como ordem de junção perfect ou pushdown de agregação baseado em custo. O console do AWS Glue fornece visibilidade das estatísticas atualizadas e das execuções de geração de estatísticas.

Agora, os administradores de information lake podem configurar a coleta semanal de estatísticas em todos os bancos de dados e tabelas de seu catálogo. Quando a automação está habilitada, o Catálogo de Dados gera e atualiza estatísticas de coluna para todas as colunas nas tabelas semanalmente. Este trabalho analisa 20% dos registros nas tabelas para calcular estatísticas. Essas estatísticas podem ser usadas pelo Redshift Spectrum e Athena CBO para otimizar consultas.

Além disso, esse novo recurso oferece flexibilidade para definir configurações de automação e configurações de coleta programada no nível da tabela. Os proprietários de dados individuais podem substituir as configurações de automação no nível do catálogo com base em requisitos específicos. Os proprietários de dados podem personalizar as configurações de tabelas individuais, inclusive se devem ativar a automação, a frequência de coleta, as colunas de destino e a porcentagem de amostragem. Essa flexibilidade permite que os administradores mantenham uma plataforma otimizada em geral, ao mesmo tempo que permite que os proprietários de dados ajustem as estatísticas de tabelas individuais.

Nesta postagem, discutimos como o Catálogo de Dados automatiza a coleta de estatísticas de tabelas e como você pode usá-lo para aumentar a eficiência da sua plataforma de dados.

Habilitar coleta de estatísticas em nível de catálogo

O administrador do information lake pode habilitar a coleta de estatísticas em nível de catálogo no console do Lake Formation. Conclua as seguintes etapas:

  1. No console do Lake Formation, escolha Catálogos no painel de navegação.
  2. Selecione o catálogo que deseja configurar e escolha Editar no Ações menu.

Apresentamos a automação do AWS Glue Knowledge Catalog para coleta de estatísticas de tabelas para melhorar o desempenho de consultas no Amazon Redshift e no Amazon Athena

  1. Selecione Habilitar geração automática de estatísticas para as tabelas do catálogo e escolha uma função do IAM. Para as permissões necessárias, consulte Pré-requisitos para gerar estatísticas de coluna.
  2. Escolher Enviar.

Você também pode ativar a coleta de estatísticas em nível de catálogo por meio da opção Interface de linha de comando da AWS (AWS CLI):

aws glue update-catalog --cli-input-json '{
    "title": "123456789012",
    "catalogInput": {
        "description": "Updating root catalog with position arn",
        "catalogProperties": {
            "customProperties": {
                "ColumnStatistics.RoleArn": "arn:aws:iam::123456789012:position/service-role/AWSGlueServiceRole",
                "ColumnStatistics.Enabled": "true"
            }
        }
    }
}'

O comando chama o AWS Glue UpdateCatalog API, que leva em um CatalogProperties estrutura que espera os seguintes pares de valores-chave para estatísticas em nível de catálogo:

  • ColumnStatistics.RoleArn – O nome de recurso da Amazon (ARN) da função do IAM a ser usado para todos os trabalhos acionados para estatísticas em nível de catálogo
  • ColumnStatistics.Enabled – Um valor booleano que indica se as configurações em nível de catálogo estão ativadas ou desativadas

Chamadores de UpdateCatalog deve ter UpdateCatalog Permissões do IAM e receber ALTER sobre CATALOG permissões no catálogo raiz se estiver usando permissões do Lake Formation. Você pode ligar para o GetCatalog API para verificar as propriedades configuradas nas propriedades do seu catálogo. Para as permissões necessárias usadas pela função passada, consulte Pré-requisitos para gerar estatísticas de coluna.

Seguindo estas etapas, a coleta de estatísticas em nível de catálogo é habilitada. O AWS Glue atualiza automaticamente as estatísticas de todas as colunas de cada tabela, amostrando 20% dos registros semanalmente. Isso permite que os administradores de information lake gerenciem com eficácia o desempenho e a economia da plataforma de dados.

Ver configurações automatizadas em nível de tabela

Quando a coleta de estatísticas em nível de catálogo está habilitada, quando uma tabela Apache Hive ou uma tabela Iceberg é criada ou atualizada usando o AWS Glue CreateTable ou UpdateTable APIs por meio do console do AWS Glue, do AWS SDK ou dos rastreadores do AWS Glue, uma configuração equivalente em nível de tabela é criada para essa tabela.

Tabelas com geração automática de estatísticas habilitadas devem seguir uma das seguintes propriedades:

  • Formatos de tabela HIVE como Parquet, Avro, ORC, JSON, ION, CSV e XML
  • Formato de tabela Apache Iceberg

Depois que uma tabela for criada ou atualizada, você poderá confirmar se uma configuração de coleta de estatísticas foi definida verificando a descrição da tabela no console do AWS Glue. A configuração deve ter o Agendar propriedade definida como Auto e Configuração de estatísticas definir como Herdado do catálogo. Qualquer configuração de tabela com as configurações a seguir é acionada automaticamente pelo AWS Glue internamente.

A seguir está uma imagem de uma Tabela Hive onde a coleta de estatísticas em nível de catálogo foi aplicada e as estatísticas foram coletadas:

A seguir está uma imagem de uma tabela Iceberg onde a coleta de estatísticas em nível de catálogo foi aplicada e as estatísticas foram coletadas:

Configurar a coleta de estatísticas em nível de tabela

Os proprietários de dados podem personalizar a coleta de estatísticas no nível da tabela para atender a necessidades específicas. Para tabelas atualizadas com frequência, as estatísticas podem ser atualizadas com mais frequência do que semanalmente. Você também pode especificar colunas de destino para focar naquelas consultadas com mais frequência.

Além disso, você pode definir qual porcentagem de registros de tabela usar ao calcular estatísticas. Portanto, você pode aumentar esse percentual para tabelas que necessitam de estatísticas mais precisas, ou diminuí-lo para tabelas onde uma amostra menor é suficiente para otimizar custos e desempenho de geração de estatísticas.

Essas configurações em nível de tabela podem substituir as configurações em nível de catálogo descritas anteriormente.

Para configurar a coleta de estatísticas em nível de tabela no console do AWS Glue, conclua as seguintes etapas:

  1. No console do AWS Glue, escolha Bancos de dados sob Catálogo de Dados no painel de navegação.
  2. Escolha um banco de dados para visualizar todas as tabelas disponíveis (por exemplo, optimization_test).
  3. Escolha a tabela a ser configurada (por exemplo, catalog_returns).
  4. Vá para Estatísticas de coluna e escolha Gerar dentro do cronograma.
  5. No Agendar seção, escolha a frequência de De hora em hora, Diário, Semanalmente, Mensal e Personalizado (expressão cron). Neste exemplo, para Freqüênciaescolher Diário.
  6. Para Hora de iníciodigitar 06:43 em UTC.

  1. Para Opções de colunaselecione Todas as colunas.
  2. Para Função do IAMescolha uma função existente ou crie uma nova função. Para as permissões necessárias, consulte Pré-requisitos para gerar estatísticas de coluna.

  1. Sob Configuração avançadapara Configuração de segurançaescolha opcionalmente sua configuração de segurança para ativar a criptografia em repouso nos logs enviados ao CloudWatch.
  2. Para Linhas de amostradigitar 100 como a porcentagem de linhas a serem amostradas.
  3. Escolher Gerar estatísticas.

Na descrição da tabela no console do AWS Glue, você pode confirmar se um trabalho de coleta de estatísticas foi agendado para an information e hora especificadas.

Seguindo estas etapas, você configurou a coleta de estatísticas em nível de tabela. Isso permite que os proprietários de dados gerenciem estatísticas de tabelas com base em seus requisitos específicos. A combinação disso com configurações em nível de catálogo feitas por administradores de information lake permite garantir uma linha de base para otimizar toda a plataforma de dados e, ao mesmo tempo, atender com flexibilidade aos requisitos de tabelas individuais.

Você também pode criar um cronograma de geração de estatísticas de coluna por meio da AWS CLI:

aws glue create-column-statistics-task-settings 
  --database-name 'database_name' 
  --table-name table_name 
  --role 'arn:aws:iam::123456789012:position/stats-role' 
  --schedule 'cron(8 0-5 14 * * ?)' 
  --column-name-list 'col-1' 
  --catalog-id '123456789012' 
  --sample-size '10.0' 
  --security-configuration 'test-security'

Os parâmetros necessários são database-name, table-namee position. Você também pode incluir parâmetros opcionais, como schedule, column-name-list, catalog-id, sample-sizee security-configuration. Para obter mais informações, consulte Gerando estatísticas de coluna em uma programação.

Conclusão

Esta postagem introduziu um novo recurso no Catálogo de Dados que permite a coleta automatizada de estatísticas no nível do catálogo com controles flexíveis por tabela. As organizações podem gerenciar e manter com eficiência estatísticas atualizadas em nível de coluna. Ao incorporar essas estatísticas, o CBO no Redshift Spectrum e no Athena pode otimizar o processamento de consultas e a economia.

Experimente esse recurso para seu próprio caso de uso e deixe-nos saber seus comentários nos comentários.


Sobre os Autores

Sotaro Hikita é um arquiteto de soluções analíticas. Ele oferece suporte a clientes em uma ampla variedade de setores na construção e operação de plataformas analíticas de maneira mais eficaz. Ele é particularmente apaixonado por tecnologias de huge information e software program de código aberto.

Noritaka Sekiyama é arquiteto principal de Huge Knowledge da equipe AWS Glue. Ele trabalha em Tóquio, Japão. Ele é responsável pela construção de artefatos de software program para ajudar os clientes. Nas horas vagas, ele gosta de andar de bicicleta com sua bicicleta de estrada.

Kyle Duong é engenheiro sênior de desenvolvimento de software program na equipe AWS Glue e AWS Lake Formation. Ele é apaixonado pela construção de tecnologias de huge information e sistemas distribuídos.

Sandeep Adwankar é gerente de produto sênior na AWS. Baseado na área da baía da Califórnia, ele trabalha com clientes em todo o mundo para traduzir requisitos comerciais e técnicos em produtos que permitem aos clientes melhorar a forma como gerenciam, protegem e acessam dados.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *