+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

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

Polars 2.0 spúšťa collect na streamovacom engine štandardne.

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.

Prečítajte si písanú edíciu (anglicky) ↗

Č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.

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

  1. Release of Polars 2.0Polars (pola.rs)
  2. Polars 2.0 upgrade guidePolars documentation
  3. Polars homepagePolars (pola.rs)
  4. polars-2.0-benchmark repositoryPolars on GitHub
  5. Release of Polars 2.0 (Hacker News discussion)Hacker News

Súvisiace videá