Tecnologias/04 - Armazenamento de Objetos/01 - Amazon S32 min
Apache Parquet e Consultas no S3
Definição
Apache Parquet é um formato de arquivo colunar. Organiza dados para leitura eficiente de colunas específicas e oferece mecanismos de codificação e compressão. Pode ser armazenado no S3, em disco local ou em outros sistemas de arquivos.
S3 é o local de armazenamento; Parquet é o formato do arquivo. Quem executa SQL é o motor de consulta. Referência: visão geral do Parquet.
Estrutura interna
Um arquivo é dividido em row groups, conjuntos de linhas. Dentro de cada grupo, os dados de cada coluna ficam em column chunks, divididos em páginas. Metadados permitem localizar esses blocos; estatísticas disponíveis podem permitir que leitores compatíveis ignorem partes incompatíveis com um filtro. Referência: formato físico.
Exemplo de consulta com ClickHouse
Considere um arquivo acessível com as colunas instante, caminho e duracao_ms:
SELECT caminho, count() AS acessos, avg(duracao_ms) AS media_ms
FROM s3(
'https://meu-bucket.s3.amazonaws.com/eventos/2026-09-15.parquet',
'Parquet'
)
GROUP BY caminho;
O endereço é ilustrativo. Para um objeto privado, o ambiente precisa de autenticação e permissão adequadas; o exemplo não concede acesso. A função lê os dados externos para responder à consulta, sem criar automaticamente uma tabela local. Referência: função s3.
Consulta com DuckDB
3. Parquet e S3 com DuckDB explica a mesma separação entre armazenamento, formato
e motor usando read_parquet, com um exemplo local completo e leitura de objetos no S3.
Diferença entre duas partições
- Prefixo no S3: organização de chaves, por exemplo
ano=2026/mes=09/. - Row group no Parquet: divisão interna de um arquivo.
Um motor pode evitar arquivos pelo caminho e, em seguida, evitar blocos internos pelos metadados. Esse aproveitamento depende do leitor, do filtro e do arquivo.
Limitações
Muitos arquivos pequenos aumentam trabalho de listagem, abertura e leitura de metadados. Arquivos mal organizados podem exigir ler mais dados do que o esperado. Parquet sozinho também não fornece um catálogo transacional para múltiplos arquivos: formatos de tabela como Apache Iceberg acrescentam outra camada de metadados e controle.
Aprofundamento aplicado
Três níveis para descartar dados
| Nível | Informação usada | Trabalho que pode ser evitado |
|---|---|---|
| Arquivos/partições | Caminhos ou metadados de tabela | Abrir arquivos fora do período |
| Row groups | Estatísticas disponíveis por coluna | Ler grupos incompatíveis com o filtro |
| Colunas e páginas | Projeção e recursos do leitor | Trazer campos e páginas desnecessários |
O leitor precisa suportar a otimização e o arquivo precisa fornecer informação útil. Um mínimo e máximo muito amplo não demonstra que todo valor intermediário existe; serve para eliminar intervalos certamente incompatíveis. Referência: estrutura física.
Cenário: arquivo com cem colunas, consulta usando três. A projeção pode economizar leitura, mas filtrar por um campo sem estatísticas úteis ainda pode exigir percorrer muitos grupos. Compressão, ordenação e seletividade atuam em etapas diferentes.
Exercício: compare dados ordenados e embaralhados pelo campo de data. Resultado esperado: o filtro devolve o mesmo resultado, mas a organização pode permitir descartar mais grupos no arquivo ordenado. Confira o plano e leituras reais.
Relacionado: 1. Amazon S3 · 1. ClickHouse · Athena e Glue.
Parte de Amazon S3