Title: Engenharia de Software / Parquet
Tags: Engenharia_de_Software Resumo
On every note of this deck, unless a note says otherwise:
tldr: - Apache Parquet é um formato colunar (armazena por colunas, não por linhas) otimizado para Big Data, trazendo leitura mais rápida e arquivos menores em cenários analíticos.
- Por ser aberto (Apache), reduz vendor lock-in e integra bem com ecossistemas modernos (ex.: Spark, Hive, Presto/Trino, BigQuery, Snowflake).
- Principais ganhos do modelo colunar:
- Lê só as colunas necessárias (ex.: consulta usa 5 de 100 colunas → ignora fisicamente o resto).
- Compressão/codificação muito mais eficiente por coluna (valores repetidos), podendo reduzir bastante o tamanho vs CSV/JSON.
- Suporta otimizações como predicate pushdown (pula blocos inteiros usando metadados como mínimo/máximo).
- Comparação com formatos comuns:
- CSV: simples, porém sem tipos/metadados, sensível a formatação, sem compressão nativa e pouco eficiente para análises.
- JSON: flexível, mas muito verboso, difícil de comprimir bem, e caro para interpretar (esquema-livre).
- Avro: binário + esquema embutido, porém ainda row-based (lê tudo mesmo se precisar de poucas colunas).
- Estrutura interna do Parquet (pensada para desempenho e paralelismo):
- Row Groups → Column Chunks → Pages (data pages e dictionary pages).
- Metadados no footer tornam o arquivo auto-descritivo (tipos, compressão, estatísticas, nulos etc.).
- Técnicas/algoritmos comuns:
- Dictionary encoding e run-length encoding para repetição.
- Compressões como Snappy (rápida), Gzip (compacta mais), ZSTD (bom equilíbrio).
- Contexto: criado em 2013 (Cloudera + Twitter), inspirado no Dremel/BigQuery, e hoje é base física de formatos como Delta Lake, Iceberg e Hudi.
link: https://documentacao.online/estudos/d1i5.html

front: (PROF. DIEGO / INÉDITAS – 2025) O Apache Parquet é um formato de armazenamento orientado a colunas, o que permite que as ferramentas de análise consultem apenas os dados relevantes para cada operação, reduzindo o volume de leitura em disco e acelerando o desempenho das consultas.
response: Correto
comment: O Apache Parquet é de fato um formato de armazenamento colunar, o que permite leitura seletiva de colunas específicas. Isso reduz E/S em disco e melhora significativamente o desempenho de consultas analíticas, especialmente em grandes volumes de dados.
title: Parquet
Other fields (not shown on cards):
back: Correto - O Apache Parquet é de fato um formato de armazenamento colunar, o que permite leitura seletiva de colunas específicas. Isso reduz E/S em disco e melhora significativamente o desempenho de consultas analíticas, especialmente em grandes volumes de dados.

front: (PROF. DIEGO / INÉDITAS – 2025) Uma das desvantagens do Parquet em relação ao CSV é que ele não armazena metadados internos, exigindo que o esquema seja definido externamente por cada ferramenta que o consome.
response: Errado
comment: Uma das vantagens do Parquet em relação ao CSV é justamente o armazenamento de metadados internos, como o esquema de colunas e tipos de dados. Isso facilita a interpretação dos dados por diferentes ferramentas, sem a necessidade de definição externa.
title: Parquet
Other fields (not shown on cards):
back: Errado - Uma das vantagens do Parquet em relação ao CSV é justamente o armazenamento de metadados internos, como o esquema de colunas e tipos de dados. Isso facilita a interpretação dos dados por diferentes ferramentas, sem a necessidade de definição externa.

front: (PROF. DIEGO / INÉDITAS – 2025) O Parquet, apesar de sua eficiência em leitura, não oferece suporte a compressão nativa, exigindo o uso de ferramentas externas para compactação de arquivos.
response: Errado
comment: O Parquet oferece suporte nativo à compressão de dados, permitindo o uso de algoritmos como Snappy, Gzip e Brotli. Essa compressão é aplicada por coluna, aumentando a eficiência de armazenamento e leitura.
title: Parquet
Other fields (not shown on cards):
back: Errado - O Parquet oferece suporte nativo à compressão de dados, permitindo o uso de algoritmos como Snappy, Gzip e Brotli. Essa compressão é aplicada por coluna, aumentando a eficiência de armazenamento e leitura.

front: (PROF. DIEGO / INÉDITAS – 2025) Ao contrário do JSON, que exige parsing e conversão de tipos em tempo de leitura, o Parquet armazena os dados com tipagem binária e estrutura de esquema, otimizando o desempenho de leitura.
response: Correto
comment: O Parquet armazena os dados em formato binário com tipagem explícita e esquema embutido, o que elimina a necessidade de parsing e inferência de tipos na leitura, como ocorre com JSON, resultando em melhor desempenho.
title: Parquet
Other fields (not shown on cards):
back: Correto - O Parquet armazena os dados em formato binário com tipagem explícita e esquema embutido, o que elimina a necessidade de parsing e inferência de tipos na leitura, como ocorre com JSON, resultando em melhor desempenho.

front: (PROF. DIEGO / INÉDITAS – 2025) O Predicate Pushdown, uma técnica de otimização utilizada pelo Parquet, permite evitar a leitura de blocos de dados inteiros com base em metadados como valores mínimo e máximo.
response: Correto
comment: O Predicate Pushdown permite que motores de consulta ignorem blocos de dados inteiros no Parquet com base em metadados (ex.: valores mínimo e máximo), evitando leituras desnecessárias e melhorando a performance.
title: Parquet
Other fields (not shown on cards):
back: Correto - O Predicate Pushdown permite que motores de consulta ignorem blocos de dados inteiros no Parquet com base em metadados (ex.: valores mínimo e máximo), evitando leituras desnecessárias e melhorando a performance.

front: (PROF. DIEGO / INÉDITAS – 2025) JSON e CSV são formatos mais eficientes que o Parquet para compressão e leitura em ambientes de Big Data, devido à sua simplicidade estrutural.
response: Errado
comment: Apesar da simplicidade, JSON e CSV não são mais eficientes que o Parquet em compressão e leitura. O Parquet, por ser colunar e binário, oferece compressão superior e leitura otimizada em cenários de Big Data.
title: Parquet
Other fields (not shown on cards):
back: Errado - Apesar da simplicidade, JSON e CSV não são mais eficientes que o Parquet em compressão e leitura. O Parquet, por ser colunar e binário, oferece compressão superior e leitura otimizada em cenários de Big Data.

front: (PROF. DIEGO / INÉDITAS – 2025) Considerando as características do Apache Parquet, qual das opções abaixo descreve corretamente uma de suas vantagens em relação aos formatos baseados em linhas, como CSV e Avro?
a) O Parquet permite leitura sequencial por registro, o que o torna mais eficiente em consultas linha a linha do que o Avro.
b) O Parquet evita a repetição de dados por meio do uso de estruturas aninhadas, semelhantes ao modelo do JSON.
c) O Parquet elimina a necessidade de parsing textual, pois armazena os dados em formato binário com metadados estruturados.
d) O Parquet possui maior compatibilidade com bancos relacionais do que com ferramentas distribuídas, como Spark e Hive.
e) O Parquet depende de arquivos externos para definir o esquema e os tipos de dados de cada coluna.
response: Letra C
comment: (a) Errado. O Parquet é colunar e não sequencial por registro; essa é uma característica dos formatos orientados a linha, como Avro. (b) Errado. Estruturas aninhadas são mais associadas ao JSON; o Parquet prioriza colunas homogêneas, não chaves repetitivas. (c) Correto. Parquet armazena dados em binário e inclui metadados, eliminando a necessidade de parsing textual e facilitando o processamento. (d) Errado. O Parquet é projetado para ambientes distribuídos e se integra nativamente com Spark, Hive e outros motores analíticos. (e) Errado. O Parquet é auto-descritivo; não depende de arquivos externos para informar seu esquema de dados.
title: Parquet
Other fields (not shown on cards):
back: Letra C - (a) Errado. O Parquet é colunar e não sequencial por registro; essa é uma característica dos formatos orientados a linha, como Avro. (b) Errado. Estruturas aninhadas são mais associadas ao JSON; o Parquet prioriza colunas homogêneas, não chaves repetitivas. (c) Correto. Parquet armazena dados em binário e inclui metadados, eliminando a necessidade de parsing textual e facilitando o processamento. (d) Errado. O Parquet é projetado para ambientes distribuídos e se integra nativamente com Spark, Hive e outros motores analíticos. (e) Errado. O Parquet é auto-descritivo; não depende de arquivos externos para informar seu esquema de dados.

front: (PROF. DIEGO / INÉDITAS – 2025) Sobre as funcionalidades de metadados e compressão no formato Parquet, assinale a alternativa correta:
a) O Parquet não armazena estatísticas como contagem de nulos ou valores máximos e mínimos, pois isso aumenta o tamanho do arquivo.
b) O Parquet permite aplicar técnicas de compressão específicas por tipo de dado, como codificação por dicionário para strings.
c) O Parquet utiliza o mesmo método de compressão para todas as colunas, independentemente do tipo de dado armazenado.
d) O Parquet, por não suportar compressão, depende do sistema de arquivos (como HDFS) para otimizar o espaço utilizado.
e) O Parquet não permite a leitura seletiva de colunas devido ao seu modelo orientado a registros completos.
response: Letra B
comment: (a) Errado. O Parquet armazena sim estatísticas como nulos, mínimos e máximos por bloco, o que permite otimizações como Predicate Pushdown. (b) Correto. O Parquet aplica compressão adequada ao tipo de dado, como dictionary encoding para textos e run-length encoding para sequências. (c) Errado. Ele permite diferentes métodos de compressão por coluna, o que é parte da sua eficiência. (d) Errado. Parquet possui compressão nativa e independente do sistema de arquivos onde é armazenado. (e) Errado. Por ser colunar, o Parquet permite ler apenas as colunas necessárias, ignorando fisicamente as outras.
title: Parquet
Other fields (not shown on cards):
back: Letra B - (a) Errado. O Parquet armazena sim estatísticas como nulos, mínimos e máximos por bloco, o que permite otimizações como Predicate Pushdown. (b) Correto. O Parquet aplica compressão adequada ao tipo de dado, como dictionary encoding para textos e run-length encoding para sequências. (c) Errado. Ele permite diferentes métodos de compressão por coluna, o que é parte da sua eficiência. (d) Errado. Parquet possui compressão nativa e independente do sistema de arquivos onde é armazenado. (e) Errado. Por ser colunar, o Parquet permite ler apenas as colunas necessárias, ignorando fisicamente as outras.

front: (PROF. DIEGO / INÉDITAS – 2025) Em relação à interoperabilidade e ao uso do Parquet em ecossistemas analíticos modernos, é correto afirmar que:
a) Por ser um formato proprietário, o Parquet exige licenças específicas para ser usado em ambientes de nuvem como AWS e GCP.
b) O Parquet foi criado com foco em bancos relacionais tradicionais e não possui suporte nativo em plataformas de Big Data.
c) A estrutura do Parquet permite que ferramentas como Spark e Hive leiam os dados sem necessidade de conversão prévia.
d) O Parquet exige que o esquema seja definido externamente para que ferramentas como Trino possam interpretá-lo corretamente.
e) O Parquet não suporta evolução de esquema, sendo necessário recriar os arquivos sempre que novas colunas forem adicionadas.
response: Letra C
comment: (a) Errado. O Parquet é um formato aberto e gratuito, sem necessidade de licenças, sendo amplamente suportado por provedores de nuvem. (b) Errado. O Parquet foi criado especificamente para ambientes de Big Data e não para bancos relacionais tradicionais. (c) Correto. O Parquet é auto-descritivo e permite leitura direta por ferramentas como Spark e Hive, sem conversão prévia de formato. (d) Errado. O Parquet inclui metadados internos com esquema, o que elimina a necessidade de definições externas. (e) Errado. O Parquet suporta evolução de esquema, permitindo adição ou remoção de colunas sem quebrar compatibilidade.
title: Parquet
Other fields (not shown on cards):
back: Letra C - (a) Errado. O Parquet é um formato aberto e gratuito, sem necessidade de licenças, sendo amplamente suportado por provedores de nuvem. (b) Errado. O Parquet foi criado especificamente para ambientes de Big Data e não para bancos relacionais tradicionais. (c) Correto. O Parquet é auto-descritivo e permite leitura direta por ferramentas como Spark e Hive, sem conversão prévia de formato. (d) Errado. O Parquet inclui metadados internos com esquema, o que elimina a necessidade de definições externas. (e) Errado. O Parquet suporta evolução de esquema, permitindo adição ou remoção de colunas sem quebrar compatibilidade.

front: (PROF. DIEGO / INÉDITAS – 2025) O Apache Parquet utiliza uma estrutura hierárquica composta por Row Groups, Column Chunks e Pages, que permite leitura paralela e aplicação seletiva de filtros, otimizando a performance em ambientes analíticos distribuídos.
response: Correto
comment: estrutura hierárquica do Parquet – com Row Groups, Column Chunks e Pages – permite leitura paralela e aplicação de filtros por coluna e bloco, otimizando o desempenho em consultas analíticas distribuídas.
title: Parquet
Other fields (not shown on cards):
back: Correto - estrutura hierárquica do Parquet – com Row Groups, Column Chunks e Pages – permite leitura paralela e aplicação de filtros por coluna e bloco, otimizando o desempenho em consultas analíticas distribuídas.

front: (PROF. DIEGO / INÉDITAS – 2025) No Parquet, cada Row Group contém os dados de uma única coluna, o que compromete a paralelização da leitura e exige reconstrução posterior dos registros completos.
response: Errado
comment: No Parquet, cada Row Group contém os dados de todas as colunas, armazenadas separadamente em formato colunar. Isso favorece a leitura paralela e não compromete a reconstrução dos registros.
title: Parquet
Other fields (not shown on cards):
back: Errado - No Parquet, cada Row Group contém os dados de todas as colunas, armazenadas separadamente em formato colunar. Isso favorece a leitura paralela e não compromete a reconstrução dos registros.

front: (PROF. DIEGO / INÉDITAS – 2025) O uso de metadados no rodapé do arquivo Parquet permite que o mecanismo de consulta descubra o esquema e estatísticas dos dados sem precisar ler o conteúdo completo do arquivo.
response: Correto
comment: O Parquet armazena metadados no rodapé do arquivo, incluindo esquema e estatísticas (como valores mínimos e máximos), permitindo que mecanismos de consulta acessem essas informações sem ler todos os dados.
title: Parquet
Other fields (not shown on cards):
back: Correto - O Parquet armazena metadados no rodapé do arquivo, incluindo esquema e estatísticas (como valores mínimos e máximos), permitindo que mecanismos de consulta acessem essas informações sem ler todos os dados.

front: (PROF. DIEGO / INÉDITAS – 2025) Técnicas como dictionary encoding e predicate pushdown são ineficazes no Parquet, já que os dados estão comprimidos e codificados de forma uniforme para todo o arquivo.
response: Errado
comment: Técnicas como dictionary encoding e predicate pushdown são altamente eficazes no Parquet. Elas funcionam por coluna e por bloco, permitindo compressão eficiente e filtragem de dados sem descompactar o arquivo inteiro.
title: Parquet
Other fields (not shown on cards):
back: Errado - Técnicas como dictionary encoding e predicate pushdown são altamente eficazes no Parquet. Elas funcionam por coluna e por bloco, permitindo compressão eficiente e filtragem de dados sem descompactar o arquivo inteiro.

front: (PROF. DIEGO / INÉDITAS – 2025) No formato Parquet, o armazenamento colunar e a estrutura interna permitem ganhos significativos de desempenho. Assinale a alternativa que melhor explica como isso ocorre:
a) Ao armazenar registros completos por linha, o Parquet garante alta compressão e facilita a leitura paralela por sistemas distribuídos.
b) A organização por colunas permite leitura seletiva e aplicação de compressão especializada, reduzindo o volume de dados processado.
c) O Parquet executa parsing de texto linha a linha, o que facilita a extração de dados mesmo em arquivos desestruturados.
d) Cada registro no Parquet possui um dicionário independente, o que garante compressão máxima, mesmo com dados altamente distintos.
e) O modelo colunar exige que todas as colunas sejam lidas para preservar a integridade dos dados e garantir o paralelismo.
response: Letra B
comment: (a) Errado. O Parquet não armazena registros completos por linha, e sim por colunas. Esse modelo não favorece compressão em linha, mas sim por tipo de dado em colunas; (b) Correto. A estrutura colunar permite ler apenas as colunas necessárias e aplicar compressão eficiente por tipo de dado, otimizando E/S e processamento, o que resulta em alto desempenho; (c) Errado. O Parquet é binário e estruturado, não realiza parsing de texto linha a linha como JSON ou CSV, o que reduz sobrecarga e melhora o desempenho; (d) Errado. O Dictionary Encoding no Parquet não é aplicado a cada registro, mas a colunas com baixa cardinalidade, e nem sempre é usado quando os dados são muito distintos; (e) Errado. A leitura no Parquet pode ser seletiva; não é necessário carregar todas as colunas, o que é justamente um dos pontos fortes do modelo colunar.
title: Parquet
Other fields (not shown on cards):
back: Letra B - (a) Errado. O Parquet não armazena registros completos por linha, e sim por colunas. Esse modelo não favorece compressão em linha, mas sim por tipo de dado em colunas; (b) Correto. A estrutura colunar permite ler apenas as colunas necessárias e aplicar compressão eficiente por tipo de dado, otimizando E/S e processamento, o que resulta em alto desempenho; (c) Errado. O Parquet é binário e estruturado, não realiza parsing de texto linha a linha como JSON ou CSV, o que reduz sobrecarga e melhora o desempenho; (d) Errado. O Dictionary Encoding no Parquet não é aplicado a cada registro, mas a colunas com baixa cardinalidade, e nem sempre é usado quando os dados são muito distintos; (e) Errado. A leitura no Parquet pode ser seletiva; não é necessário carregar todas as colunas, o que é justamente um dos pontos fortes do modelo colunar.

front: (PROF. DIEGO / INÉDITAS – 2025) Sobre os algoritmos de compressão suportados pelo Parquet e sua aplicação por coluna, é correto afirmar que:
a) O Parquet aplica o mesmo algoritmo de compressão para todo o arquivo, geralmente o Gzip, para facilitar a descompressão.
b) O Snappy é o algoritmo padrão no Parquet por oferecer a melhor taxa de compressão entre todas as opções disponíveis.
c) O Parquet escolhe o algoritmo com base no tipo de dado da coluna, podendo utilizar Snappy, Gzip ou ZSTD conforme o contexto.
d) O uso de compressão por coluna no Parquet não influencia no desempenho, mas apenas na economia de espaço em disco.
e) O Dictionary Encoding no Parquet é utilizado para todas as colunas, independentemente do número de valores distintos.
response: Letra C
comment: (a) Errado. O Parquet permite aplicar algoritmos diferentes por coluna; não há obrigação de usar o mesmo algoritmo para todo o arquivo, e o Gzip não é necessariamente o padrão; (b) Errado. O Snappy é o padrão por equilibrar velocidade e compressão, mas não oferece a melhor taxa de compressão — Gzip e ZSTD, por exemplo, comprimem mais, porém com maior custo de processamento; (c) Correto. O Parquet permite a escolha do algoritmo de compressão por coluna, sendo comum a seleção com base no tipo de dado e no objetivo (desempenho ou compactação), usando Snappy, Gzip ou ZSTD; (d) Errado. A compressão por coluna no Parquet impacta diretamente o desempenho, já que reduz E/S de disco e acelera consultas analíticas ao evitar a leitura desnecessária de dados; (e) Errado. O Dictionary Encoding é aplicado apenas quando vantajoso, ou seja, em colunas com baixo número de valores distintos; seu uso é decidido com base na cardinalidade da coluna.
title: Parquet
Other fields (not shown on cards):
back: Letra C - (a) Errado. O Parquet permite aplicar algoritmos diferentes por coluna; não há obrigação de usar o mesmo algoritmo para todo o arquivo, e o Gzip não é necessariamente o padrão; (b) Errado. O Snappy é o padrão por equilibrar velocidade e compressão, mas não oferece a melhor taxa de compressão — Gzip e ZSTD, por exemplo, comprimem mais, porém com maior custo de processamento; (c) Correto. O Parquet permite a escolha do algoritmo de compressão por coluna, sendo comum a seleção com base no tipo de dado e no objetivo (desempenho ou compactação), usando Snappy, Gzip ou ZSTD; (d) Errado. A compressão por coluna no Parquet impacta diretamente o desempenho, já que reduz E/S de disco e acelera consultas analíticas ao evitar a leitura desnecessária de dados; (e) Errado. O Dictionary Encoding é aplicado apenas quando vantajoso, ou seja, em colunas com baixo número de valores distintos; seu uso é decidido com base na cardinalidade da coluna.