# Polars 2.0: prečo spojenia už neudržiavajú poradie riadkov

Published: 2026-10-08

Polars 2.0 spúšťa collect na streamovacom engine štandardne. Pre join, group\_by a unpivot už vydanie negarantuje poradie vstupných riadkov, pokiaľ explicitne nenastavíte maintain\_order alebo sort. V našom teste na polars 2.0.0, vnútorné spojenie s 2 000 000 riadkami vrátilo riadky mimo poradia vstupu štandardne a udržalo poradie s nastaveným maintain\_order. Vydanie tiež zapína out-of-core spilling a benchmarkové tvrdenia sú vlastné dodávateľovi.

Canonical: https://thedailydiff.dev/sk/video/polars-2-row-order/

## Čo toto video pokrýva

- Volanie collect() na lazy dotaze teraz štandardne používa streamovací engine, ktorý negarantuje poradie riadkov pre join, group\_by a unpivot.
- Sprievodca migráciou hovorí, že poradie už nie je poradím pred 2.0 a nie je garantované; odporúča explicitné zoradenie, ak sa naň spoliehate.
- V našom teste, štandardné vnútorné spojenie vrátilo poradie vstupu False; maintain\_order="left\_right" pri spojení vrátilo True. Jeden stroj, jeden beh, jeden typ spojenia.
- Out-of-core spilling je štandardne zapnuté: začína pri približne 80 % RAM, s predvoleným rozpočtom disku 64 GB. Out-of-core join a group\_by sú na cestovnej mape.
- collect\_schema() zachytí chýbajúci stĺpec pred prečítaním akýchkoľvek dát, ale pretypovanie, ktoré zlyhá na jednej hodnote, zlyhá až pri collect().
- Porovnanie TPC-H a TPC-DS je vlastný beh dodávateľa na odvodených dátach a jeho poznámka pod čiarou hovorí, že výsledky nie sú porovnateľné s oficiálnymi benchmarkmi.

## Kapitoly

- 0:00 Prečo sa zmenilo predvolené poradie?
- 0:56 Čo sľubuje sprievodca migráciou?
- 1:17 Je benchmark férový súboj?
- 1:41 Čo vidíme, keď to spustíme?
- 1:56 Znamená prísnejšie skôr?
- 2:07 Ako získam späť staré poradie?
- 2:20 Aký je verdikt?

## Preložený prepis

Preložené z pôvodného anglického rozprávania. Dostupný zvuk a titulky sú kontrolované službou YouTube.

### Prečo sa zmenilo predvolené poradie?

0:00 Myslíte si, že spojenie vám vráti riadky v poradí, v akom ste ich napísali. Polars 2.0 prestal štandardne zámerne sľubovať. V tomto videu: prečo sa zmenila predvolená hodnota? Čo to prinieslo? A ktorý z vašich skriptov sa zlomí ako prvý? Toto je The Daily Diff, pod kapotou. Polars je open-source knižnica DataFrame: tabuľkový engine, ktorý voláte z Pythonu,

0:20 s jadrom napísaným v Rust. Je zadarmo pod licenciou MIT a inštalujete ho pomocou pip install polars. Najprv jeden detail. Prepínač, ktorý vráti staré poradie, je argumentom samotného spojenia. Vrátim sa k tomu na konci. Od verzie 2.0, collect štandardne spúšťa streamovací engine. Streamovanie rozdeľuje dotaz na bloky, ktoré bežia paralelne, a bloky sa dokončia, keď sa dokončia.

0:42 Pre join, group by a unpivot vydanie nesľubuje poradie. Kto bude zasiahnutý ako prvý? Ktokoľvek, kto porovnáva výstup s uloženým súborom, riadok po riadku. Tento test môže prejsť na vašom notebooku a zlyhať na inom stroji. Ďalej, sprievodca migráciou.

### Čo sľubuje sprievodca migráciou?

0:57 Hovorí, že presné poradie riadkov uvedené vyššie nie je zaručené. Takže ak sa spoliehate na poradie, explicitne zoraďte. Out-of-core je tiež štandardne zapnuté. Začína sa presúvať na disk pri približne osemdesiatich percentách RAM, s rozpočtom šesťdesiatštyri gigabajtov. Sort, okenné funkcie a mnohé výrazy sa teraz môžu preliať. Joins a group-bys prichádzajú.

### Je benchmark férový súboj?

1:17 Polars hovorí, že prekonáva DataFusion a DuckDB na TPC-H a TPC-DS benchmarkoch. Čísla pochádzajú z ich vlastných testov, na odvodených dátach, a ich poznámka pod čiarou hovorí, že nie sú porovnateľné s oficiálnymi výsledkami. Ich vlastné čísla hovoria, že Polars je približne trikrát osemkrát rýchlejší z šestnástich jadier na sto deväťdesiatdva, na TPC-H. Tiež hovoria, že extra vlákna veľkého stroja spomaľujú malé dotazy.

### Čo vidíme, keď to spustíme?

1:41 Dvakrát sme spustili rovnaké spojenie na Polars 2.0.0. Predvolené spustenie premieša riadky. S príznakom poradie vstupu prežije. Nájdite spojenia, ktoré slúžia ako vstup pre test. Akékoľvek spojenie bez zoradenia po ňom je rozhodnutie o poradí riadkov, ktoré ste nikdy neurobili. Polars 2.0 je prísnejší na typy.

### Znamená prísnejšie skôr?

1:58 Kontrola schémy zachytí chýbajúci stĺpec pred prečítaním akýchkoľvek dát. Nemôže zachytiť pretypovanie, ktoré zlyhá na jednom riadku, pretože táto chyba čaká na dáta. Teraz slučka, ktorú som otvoril.

### Ako získam späť staré poradie?

2:08 Prepínač je priamo na spojení. Nastavte maintain order na spojení, alebo po ňom pridajte zoradenie. Sprievodca navrhuje zoradenie. Príznak spojenia udržal poradie v našom teste, s poradím ľavej strany zachovaným ako vľavo, vpravo. Verdikt, pod kapotou: NEEDS REVIEW.

### Aký je verdikt?

2:22 Pred upgradom by som skontroloval každé spojenie. Máte k tomu otázku? Napíšte ju do komentárov. A to je dnešný rozdiel. Som Niko z Axrisi. Zlučujte zodpovedne.

## Zdroje

- [Release of Polars 2.0](https://pola.rs/posts/release-polars-2/) — Polars (pola.rs)
- [Polars 2.0 upgrade guide](https://docs.pola.rs/releases/upgrade/2/) — Polars documentation
- [Polars homepage](https://pola.rs/) — Polars (pola.rs)
- [polars-2.0-benchmark repository](https://github.com/pola-rs/polars-2.0-benchmark) — Polars on GitHub
- [Release of Polars 2.0 (Hacker News discussion)](https://news.ycombinator.com/item?id=49977177) — Hacker News
