Hacker News Digest

21 августа 2025 г. в 09:34 • jeronimo.dev • ⭐ 193 • 💬 44

OriginalHN

#parquet#duckdb#pandas#apache#sql#compression#dataformats#apache-spark#delta-lake#iceberg

The two versions of Parquet

Две версии Parquet

DuckDB недавно описали, как SQL-движки, не реализовав полностью спецификацию Parquet, тормозят её развитие. То же происходит в экосистеме: после выхода моей библиотеки Carpet я включил v2 по умолчанию, но быстро откатил изменение — устаревший Pandas не читал такие файлы.

Почему v2 не внедрён

Спецификация готова, но нет согласия, какие именно фичи считать «ядром» v2. Обсуждение в apache/parquet-format длится четвёртый год. Смешиваются два независимых направления:

  • новые кодировки (RLE_DICTIONARY, DELTA_BYTE_ARRAY) — ломают только столбец;
  • новая структура страниц (Data Page V2) — ломает весь файл.

Логические типы (например, VARIANT) не привязаны к версии формата.

Альтернативы

В ML-среде Parquet и ORC стали тесны, поэтому появились форматы Nimble (Facebook) и LV2 (LanceDB), но в data-engineering Parquet остаётся королём.

Производительность v2

Достаточно выставить WriterVersion.PARQUET_2_0.

Датасет Алгоритм v1, МБ v2, МБ Δ
Италия без сжатия 564 355 –37 %
Италия SNAPPY 220 198 –10 %
NYC без сжатия 760 511 –33 %
NYC SNAPPY 542 480 –11 %

Новые кодировки лучше уплотняют данные до компрессии, поэтому выигрыш больше у несжатых файлов, а у ZSTD размер даже немного вырос.