Otimizar tabelas do Iceberg - Amazon Athena

Otimizar tabelas do Iceberg

O Athena fornece vários recursos de otimização para melhorar a performance das consultas nas tabelas do Apache Iceberg. À medida que os dados se acumulam, as consultas podem se tornar menos eficientes devido ao aumento da sobrecarga de processamento de arquivos e ao custo computacional de aplicar exclusões no nível de linha armazenadas nos arquivos de exclusão do Iceberg. Para enfrentar esses desafios, o Athena é compatível com os operadores manuais de compactação e vacuum para otimizar a estrutura da tabela. O Athena também trabalha com estatísticas do Iceberg para permitir a otimização de consultas com base em custos e a indexação de colunas do Parquet para o descarte preciso dos dados durante a execução da consulta. Esses recursos trabalham juntos para reduzir o tempo de execução da consulta, minimizar a verificação de dados e reduzir os custos. Este tópico descreve como usar esses recursos de otimização para manter consultas de alta performance em suas tabelas do Iceberg.

OPTIMIZE

A ação de compactação OPTIMIZE table REWRITE DATA regrava os arquivos de dados em um layout mais otimizado com base no tamanho e no número de delete files associados. Para obter detalhes sobre a sintaxe e as propriedades da tabela, consulte OPTIMIZE.

Exemplo

O exemplo a seguir mescla delete files em arquivos de dados e produz arquivos próximos ao tamanho do arquivo de destino, em que o valor de category é c1.

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM executa a expiração do snapshot e a remoção de arquivos órfãos. Essas ações reduzem o tamanho dos metadados e removem os arquivos que não estão no estado atual da tabela e que também são mais antigos do que o período de retenção especificado para a tabela. Para obter detalhes sobre a sintaxe, consulte VACUUM.

Exemplo

O exemplo a seguir usa uma propriedade de tabela para configurar a tabela iceberg_table para reter os últimos três dias de dados e, em seguida, usa VACUUM para expirar os snapshots antigos e remover os arquivos órfãos da tabela.

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table

Usar estatísticas de tabelas do Iceberg

O otimizador baseado em custos do Athena usa estatísticas do Iceberg para produzir planos de consulta ideais. Quando as estatísticas são geradas para suas tabelas do Iceberg, o Athena usa automaticamente essas informações para tomar decisões inteligentes sobre a ordenação de junções, os filtros e o comportamento de agregação, geralmente melhorando a performance das consultas e reduzindo custos.

As estatísticas do Iceberg são ativadas por padrão quando você usa as Tabelas do S3. Para outras tabelas do Iceberg, o Athena usa a propriedade use_iceberg_statistics da tabela para determinar se as estatísticas devem ser usadas para a otimização baseada em custos. Para começar, consulte Otimizar a performance da consulta usando estatísticas de coluna no Guia do usuário do AWS Glue, ou use o console do Athena para gerar estatísticas sob demanda em suas tabelas do Iceberg.

Usar indexação de colunas do Parquet

A indexação de colunas do Parquet possibilita que o Athena realize um descarte de dados mais preciso durante a execução da consulta, aproveitando as estatísticas mínimo/máximo no nível da página, além das estatísticas no nível do grupo de linhas. Isso permite que o Athena pule páginas desnecessárias em grupos de linhas, reduzindo significativamente a quantidade de dados verificados e melhorando a performance das consultas. Ele funciona melhor para consultas com predicados de filtro seletivo em colunas classificadas, melhorando o tempo de execução e a eficiência da verificação de dados, ao mesmo tempo em que reduz a quantidade de dados que a Athena precisa ler no Amazon S3.

O Athena usará índices de coluna do Parquet por padrão com Tabelas do S3 se os índices de coluna estiverem presentes nos arquivos Parquet subjacentes. Para outras tabelas do Iceberg, o Athena usa a propriedade use_iceberg_parquet_column_index para determinar se deve utilizar os índices das colunas no arquivo Parquet. Defina essa propriedade da tabela usando o console do AWS Glue ou a API UpdateTable.