Usar projeção de partições com o Amazon Athena
É possível usar a projeção de partições no Athena para acelerar o processamento de consultas de tabelas altamente particionadas e automatizar o gerenciamento de partições.
Na projeção de partições, o Athena calcula valores e localizações de partições usando as propriedades da tabela que você configura diretamente em sua tabela no AWS Glue. As propriedades da tabela permitem que o Athena “projete”, ou determine, as informações de partição necessárias em vez de fazer mais uma pesquisa de metadados demorada no AWS Glue Data Catalog. Como as operações na memória costumam ser mais rápidas do que as operações remotas, a projeção de partições pode reduzir o runtime de consultas em tabelas altamente particionadas. Dependendo das características específicas da consulta e dos dados subjacentes, a projeção de partições pode reduzir significativamente o runtime para consultas restritas na recuperação de metadados de partição.
Noções básicas de remoção de partições versus a projeção de partições
A redução de partição coleta metadados e os “reduz” para apenas as partições que se aplicam à sua consulta. Geralmente, isso acelera as consultas. O Athena usa a redução de partição em todas as tabelas com colunas de partição, inclusive aquelas configuradas para projeção de partições.
Normalmente, ao processar consultas, o Athena faz uma chamada GetPartitions
para o AWS Glue Data Catalog antes de reduzir a partição. Se uma tabela tiver um grande número de partições, o uso de GetPartitions
poderá prejudicar a performance. Para que isso não aconteça, você pode usar a projeção de partições. A projeção de partições permite que o Athena evite chamar GetPartitions
porque a configuração de projeção de partições fornece ao Athena todas as informações necessárias para criar as partições propriamente ditas.
Usar projeção de partições
Para usar a projeção de partições, especifique os intervalos de valores de partição e os tipos de projeção para cada coluna de partição nas propriedades da tabela no AWS Glue Data Catalog ou no metastore do Hive externo. Essas propriedades personalizadas na tabela permitem que o Athena saiba quais padrões de partição esperar ao executar uma consulta na tabela. Durante a execução da consulta, o Athena usa essas informações para projetar os valores de partição, em vez de recuperá-los do AWS Glue Data Catalog ou do metastore do Hive externo. Esse comportamento reduz o tempo de execução da consulta e também automatiza o gerenciamento de partições, pois acaba com a necessidade de criar manualmente partições no Athena, no AWS Glue ou no metastore do Hive externo.
Importante
Habilitar a projeção de partições em uma tabela faz com que o Athena ignore os metadados de partição registrados na tabela no AWS Glue Data Catalog ou no metastore do Hive.
Alguns casos de uso
Os cenários em que a projeção de partições é útil incluem o seguinte:
-
As consultas em uma tabela altamente particionada não são concluídas com a rapidez desejada.
-
Você adiciona partições regularmente a tabelas à medida que novas partições de data ou hora são criadas em seus dados. Com a projeção de partições, você configura intervalos de datas relativos que podem ser usados à medida que novos dados chegam.
-
Você tem dados altamente particionados no Amazon S3. Os dados não são práticos para modelar no AWS Glue Data Catalog ou no metastore do Hive, e suas consultas leem apenas pequenas partes deles.
Estruturas de partições projetáveis
A projeção de partições é mais facilmente configurada quando as partições seguem um padrão previsível como, mas não limitado ao seguinte:
-
Inteiros: qualquer sequência contínua de inteiros, como
[1, 2, 3, 4, ..., 1000]
ou[0500, 0550, 0600, ..., 2500]
. -
Datas: qualquer sequência contínua de datas ou datas e horas, como
[20200101, 20200102, ..., 20201231]
ou[1-1-2020 00:00:00, 1-1-2020 01:00:00, ..., 12-31-2020 23:00:00]
. -
Valores enumerados: um conjunto finito de valores enumerados, como códigos de aeroporto ou Regiões da AWS.
-
Logs de AWS service (Serviço da AWS): normalmente, os logs de AWS service (Serviço da AWS) têm uma estrutura conhecida com um esquema de partição que você pode especificar no AWS Glue e que, portanto, o Athena pode usar na projeção de partições.
Como personalizar o modelo de caminho de partição
Por padrão, o Athena cria locais de partição usando o formulário s3://amzn-s3-demo-bucket/
. No entanto, se os dados estão organizados de forma diferente, o Athena oferece um mecanismo para personalizar esse modelo de caminho. Para obter as etapas, consulte Como especificar locais de armazenamento personalizados do S3.<table-root>
/partition-col-1=<partition-col-1-val>
/partition-col-2=<partition-col-2-val>
/
Considerações e limitações
As seguintes considerações se aplicam:
-
A projeção de partições elimina a necessidade de especificar partições manualmente no AWS Glue ou em um metastore do Hive externo.
-
Quando você habilita a projeção de partições em uma tabela, o Athena ignora todos os metadados de partição no AWS Glue Data Catalog ou no metastore do Hive externo referentes a essa tabela.
-
Se uma partição projetada não existir no Amazon S3, o Athena ainda a projetará. O Athena não gera um erro, mas também não retorna dados. No entanto, se muitas partições estiverem vazias, a performance poderá ser mais lenta em comparação com as partições tradicionais do AWS Glue. Se mais da metade das partições projetadas estiver vazia, é recomendado usar partições tradicionais.
-
As consultas de valores que excedem os limites de intervalo definidos para a projeção de partição não retornam erro. Em vez disso, a consulta é executada, mas não retorna nenhuma linha. Por exemplo, se você tem dados relacionados a um cronograma que começa em 2020 e está definidos como
'projection.timestamp.range'='2020/01/01,NOW'
, uma consulta comoSELECT * FROM
será concluída com êxito, mas não retornará nenhuma linha.table-name
WHERE timestamp = '2019/02/02' -
A projeção de partições somente pode ser usada quando a tabela é consultada pelo Athena. Se a mesma tabela for lida por meio de outro serviço, como o Amazon Redshift Spectrum, o Athena for Spark ou o Amazon EMR, os metadados de partição padrão serão usados.
-
Como a projeção de partições é um recurso somente DML,
SHOW PARTITIONS
não lista as partições projetadas pelo Athena, mas que não estão registradas no catálogo do AWS Glue ou no metastore do Hive externo. -
O Athena não usa as propriedades de tabela de visualizações como configuração para a projeção de partições. Para contornar essa limitação, configure e habilite a projeção de partições nas propriedades das tabelas mencionadas nas visualizações.
-
Não é possível usar filtros de dados do Lake Formation com projeção de partições na versão 2 do mecanismo do Athena.
Vídeo
O vídeo a seguir mostra como usar a projeção de partições para melhorar a performance das suas consultas no Athena.