Skip to content
Opensource internals
  • Posts

Parquet

Writing Parquet Row Groups in Parallel: Column Chunks, Dictionary Pages and the Sort-Before-Write Trick

Oct 21, 2026 9 min read Jay Hubbert

DataFusion’s Parquet writer encodes row groups in parallel across columns, streams them to object storage in one pass, and — when the input plan is already ordered — records the …

DatafusionParquetPerformanceInternals

Read more →

Polars Writes Parquet From a Streaming Pipeline

Oct 21, 2026 19 min read Jay Hubbert

The Parquet sink does not write morsels. It resizes them into row groups of a target size, encodes and compresses those row groups in parallel across columns, and hands the …

PolarsInternalsParquetStreamingPerformance

Read more →

From SQL WHERE to Parquet Row Filter: How DataFusion Decides What It Can Push Down (and What It Must Keep)

Oct 21, 2026 9 min read Jay Hubbert

A SQL predicate is not one thing to DataFusion: it is simultaneously a candidate for statistics pruning and a candidate for decoder-level evaluation, and each has its own support …

DatafusionParquetPerformanceInternals

Read more →

Polars Pushes Predicates Into the Parquet Scanner

Oct 21, 2026 13 min read Jay Hubbert

The filter is not a special case in the Parquet reader. Polars compiles the same expression tree a second time into a predicate over a synthetic frame of col_min / col_max / col_nc …

PolarsInternalsOptimizerParquetPerformance

Read more →

DataFusion's Parquet Access Plan: How Row Groups, Pages and Files Get Skipped Before a Byte Is Read

Oct 21, 2026 9 min read Jay Hubbert

DataFusion never reads a Parquet file row group by row group and hopes for the best: it builds an access plan, proves which row groups cannot match using footer statistics, the …

DatafusionParquetPerformanceInternals

Read more →

← Newer Page 1 of 2 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·