Site Local

Portal de notícias de tecnologia

Polars 2.0 adota streaming como padrão e liga processamento fora da memória

Lançada em 6/10, a nova versão muda o motor padrão das consultas preguiçosas e traz SQL de primeira classe; ordem de linhas deixa de ser garantida.

Polars 2.0 adota streaming como padrão e liga processamento fora da memória

O projeto Polars, biblioteca de DataFrames escrita em Rust e muito usada em Python, lançou a versão 2.0 em 6 de outubro de 2026. A principal mudança é de comportamento: consultas preguiçosas, feitas com LazyFrame, passam a rodar por padrão no motor de streaming, e o processamento fora da memória, com descarte temporário para o disco, vem ligado. A versão também trata SQL como recurso de primeira classe, cria um tipo de dado Map e torna a biblioteca mais rígida com tipos.

O que muda para quem processa dados

Com o streaming como padrão, chamar collect numa consulta preguiçosa usa menos memória na maioria dos casos, segundo a equipe. O descarte para o disco começa quando o uso chega a cerca de 80% da RAM, com orçamento padrão de 64 GB em disco, e por enquanto vale para ordenação, funções de janela e várias expressões; junções e agregações por grupo ainda não estão cobertas, mas estão no roteiro. Na prática, pipelines que estouravam a memória de um notebook ou de uma máquina pequena passam a ter mais chance de terminar.

O novo tipo Map lê diretamente o MapType do formato Arrow, como um dicionário de chaves e valores, com funções próprias de consulta. Antes, esse tipo era convertido em lista de estruturas. Colunas de mapa vindas de Arrow, Parquet e Iceberg passam a ser carregadas como Map.

Atenção na atualização

O guia de migração avisa que algumas mudanças podem alterar resultados sem gerar erro. A mais importante é que o motor de streaming não garante a ordem das linhas em operações como junções, group_by e unpivot. Quem depende da ordem precisa ordenar explicitamente ou usar o parâmetro maintain_order. Também mudam, entre outros pontos, o comportamento de explode com listas vazias, o tipo resultante da soma de inteiros com UInt64, que passa a Int128, e a concatenação horizontal de tabelas de alturas diferentes, que agora gera erro. O protocolo de intercâmbio de DataFrames foi removido, assim como a conversão direta de texto para data com cast. Para voltar ao motor em memória, basta configurar pl.Config.set_engine_affinity(“in-memory”) ou a variável de ambiente POLARS_ENGINE_AFFINITY.

Os números de desempenho

A equipe do Polars publicou testes derivados dos benchmarks TPC-H e TPC-DS, comparando o Polars SQL com o DuckDB 1.5.6, uma versão alfa do DuckDB 2.0 e o DataFusion 54.0.0, em máquinas da AWS com 16 e 192 vCPUs. Segundo o próprio projeto, o Polars foi o mais rápido em quase todos os cenários, mas perde em consultas pequenas quando usa todas as 192 threads, problema que a equipe diz ter diagnosticado. São testes do desenvolvedor, não comparáveis a resultados oficiais do TPC; o código foi publicado num repositório para quem quiser reproduzir. Não encontramos, até 8 de outubro, avaliação independente da nova versão.

Para equipes de dados, a recomendação documentada é revisar o guia de migração antes de atualizar pipelines em produção, principalmente os que dependem de ordem de linhas ou de conversões implícitas de tipo.

Fontes

Imagem destacada: ilustração gerada por computador, sem valor documental.

Deixe comentário

Seu endereço de e-mail não será publicado. Os campos necessários são marcados com *.

Fique por dentro

As principais notícias de tecnologia, todos os dias

Siga o portal nas redes sociais e acompanhe IA, cibersegurança, cloud, hardware e o mercado de tecnologia em primeira mão.