Voltar

Do disco à memória colunar: o que o Apache Arrow resolve que o Parquet não resolve

Aprofundamento CEVIU

Aprofundamento

O texto compara duas camadas que costumam ser confundidas. O Parquet guarda dados colunares em disco, de forma compacta. O Arrow define como essas colunas ficam na RAM depois de decodificadas. A frase do FAQ oficial do Arrow resume: o Parquet é como o dado colunar fica no disco, o Arrow é como ele fica na memória. Engines como DuckDB, Spark e pandas entram na história porque cada uma, antes do Arrow, decodificava o Parquet para um layout privado (objetos no heap, arrays NumPy e assim por diante).

O argumento técnico é de hardware. A CPU lê memória em cache lines de cerca de 64 bytes, então uma coluna int32 contígua traz 16 valores por busca. Valores espalhados em objetos do heap forçam uma busca por valor e desperdiçam a linha com cabeçalho de objeto. Além disso, instruções SIMD só operam sobre dados adjacentes e uniformes, algo que pilhas de objetos com ponteiros não oferecem. O Arrow usa um buffer tipado por coluna mais um bitmap de nulos, e strings ficam em pares valores+offsets. Já o autor do texto (um artigo no Medium) é distinto do DuckDB, que aparece como exemplo de engine que roda SQL direto sobre buffers Arrow em zero copy. O texto não traz repositório do projeto nem benchmarks próprios. O ganho de "10x+" citado vem de uma estimativa do autor, não de medição apresentada.

O que mudou

A cobertura do CEVIU mostra o mesmo tema em camadas. Em 20 de maio de 2026, o CEVIU noticiou "Apache Arrow como formato universal para intercâmbio de dados", com a tese de evitar serializar e copiar dados entre ferramentas. Em 8 de junho de 2026, em "Apache Arrow Flight: a infraestrutura de alta performance para mover dados em escala", o foco foi o transporte de RecordBatches com zero-copy. A matéria de agora volta um passo e explica o porquê no nível de memória e CPU. Também ajuda a separar da novidade de 28 de setembro de 2026, "Apache Parquet Aprimora Compressão de Dados com Nova Codificação ALP", que mexe no lado do disco, não no da memória.

Por que isso importa

Para quem opera pipelines, a leitura é prática: o gargalo muitas vezes não está no formato do arquivo, e sim na conversão entre ferramentas. Se Spark, Python e DuckDB trocam dados em Arrow, a "taxa de conversão" some. Ao desenhar um pipeline, vale perguntar onde os dados viram objetos de linha e se isso é mesmo necessário.

Linha do tempo

  1. CEVIU noticia o Arrow como formato universal de intercâmbio de dados.

  2. CEVIU cobre o Arrow Flight para mover dados em escala.

  3. CEVIU noticia a codificação ALP no Apache Parquet.

  4. CEVIU explica o que o Arrow resolve em memória que o Parquet não resolve.

Perguntas frequentes

Arrow substitui o Parquet?

Não. O Parquet resolve armazenamento compacto em disco. O Arrow resolve a representação em memória. Em geral o dado é decodificado do Parquet para o Arrow uma vez e depois usado por várias ferramentas.

Por que colunas contíguas são mais rápidas?

A CPU busca memória em cache lines de cerca de 64 bytes, então uma coluna int32 contígua traz 16 valores de uma vez. Além disso, instruções SIMD operam sobre vários valores adjacentes e do mesmo tipo em um único passo. Objetos espalhados no heap impedem as duas coisas.

Qual a relação do Arrow com o DuckDB?

Segundo o texto, o DuckDB pode rodar SQL diretamente sobre buffers Arrow que o Python já mantém, sem copiar dados. O DuckDB é um engine embarcado, que roda dentro do processo da aplicação.

O que é Arrow Flight?

É o mecanismo citado para mover dados pela rede em formato Arrow, sem serialização linha a linha. O CEVIU detalhou o tema em 8 de junho de 2026, na matéria sobre Arrow Flight e transferência zero-copy.

Fontes

Avalie este artigo:
Categoria
CEVIU Dados
Publicado
22 de outubro de 2026
Editoria
CEVIU Dados

Quer receber mais sobre CEVIU Dados?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser