+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Polars 2.0: waarom joins nie meer hul ryvolgorde behou nie

Polars 2.0 voer collect by verstek op 'n stroming-enjin uit.

Polars 2.0 voer collect by verstek op 'n stroming-enjin uit. Vir join, group_by en unpivot waarborg die vrystelling nie meer insetryvolgorde nie, tensy jy maintain_order stel of eksplisiet sorteer. In ons toetslopie op polars 2.0.0 het 'n 2,000,000-ry inner join rye by verstek buite die insetvolgorde teruggestuur en die volgorde behou met maintain_order ingestel. Die vrystelling skakel ook out-of-core spilling aan en maak die maatstaafbeweringe die verskaffer s'n.

Lees die geskrewe uitgawe (Engels) ↗

Wat hierdie video dek

  • Die oproep van collect() op 'n lui navraag gebruik nou by verstek die stroming-enjin, wat nie ryvolgorde vir join, group_by en unpivot waarborg nie.
  • Die migrasiegids sê die volgorde is nie meer die pre-2.0 volgorde nie en word nie gewaarborg nie; dit beveel 'n eksplisiete sortering aan as jy daarvan afhanklik is.
  • In ons toetslopie het 'n verstek inner join insetvolgorde Vals teruggestuur; maintain_order="left_right" op die join het Waar teruggestuur. Een masjien, een lopie, een join-vorm.
  • Out-of-core spilling is by verstek aan: dit begin by ongeveer 80% van RAM, met 'n verstek diskbegroting van 64 GB. Out-of-core join en group_by is op die padkaart.
  • collect_schema() vang 'n ontbrekende kolom voordat enige data gelees word, maar 'n cast wat op slegs een waarde misluk, misluk slegs by collect().
  • Die TPC-H en TPC-DS vergelyking is die verskaffer se eie toetslopie op afgeleide data, en die voetnoot sê die resultate is nie vergelykbaar met amptelike maatstawwe nie.

Vertaalde transkripsie

Vertaal uit die oorspronklike Engelse vertelling. Beskikbare klank en onderskrifte word deur YouTube beheer.

Waarom het die verstekvolgorde verander?

0:00 Jy dink 'n join gee jou rye terug in die volgorde waarin jy dit geskryf het. Polars 2.0 het doelbewus opgehou om dit by verstek te belowe. In hierdie video: waarom het die verstek verander? Wat het dit gekoop? En watter van jou skrifte breek eerste? Dit is The Daily Diff, onder die enjinkap. Polars is 'n oopbron DataFrame-biblioteek: 'n tabelenjin wat jy vanaf Python oproep,

0:20 met die kern daarvan in Rust geskryf. Dit is gratis onder die MIT-lisensie, en jy installeer dit met pip install polars. Eers een detail. Die skakelaar wat die ou volgorde terugbring, is 'n argument vir die join self. Ek sal aan die einde daarna terugkom. Sedert 2.0 voer collect by verstek die stroming-enjin uit. Stroming verdeel die navraag in brokke wat parallel loop, en die brokke voltooi wanneer hulle voltooi.

0:42 Vir join, group by en unpivot belowe die vrystelling nie 'n volgorde nie. Wie word eerste getref? Wie ook al die uitset reël vir reël met 'n gestoor lêer vergelyk. Daardie toets kan op jou skootrekenaar slaag en op 'n ander masjien misluk. Vervolgens, die migrasiegids.

Wat beloof die migrasiegids?

0:57 Dit sê die presiese ryvolgorde hierbo gewys, word nie gewaarborg nie. Dus, as jy op die volgorde staatmaak, sorteer eksplisiet. Out-of-core is ook by verstek aan. Dit begin data na skyf mors by ongeveer tagtig persent van RAM, met 'n vier-en-sestig gigagreep begroting. Sorteer, vensterfunksies en baie uitdrukkings kan nou mors. Joins en group-bys is op pad.

Is die maatstaf 'n regverdige stryd?

1:17 Polars sê dit klop DataFusion en DuckDB op die TPC-H en TPC-DS maatstawwe. Die syfers kom van hul eie lopies, op afgeleide data, en hul voetnoot sê dit is nie vergelykbaar met amptelike resultate nie. Hul eie syfers sê Polars word ongeveer drie punt agt keer vinniger van sestien kerne tot honderd nege-en-negentig, op TPC-H. Hulle sê ook die groot masjien se ekstra drade vertraag klein navrae.

Wat sien ons as ons dit uitvoer?

1:41 Ons het dieselfde join twee keer op Polars 2.0.0 uitgevoer. Die versteklopie skuifel die rye. Met die vlag oorleef die insetvolgorde. Vind die joins wat 'n toets voed. Enige join sonder 'n sortering daarna is 'n ryvolgorde-besluit wat jy nooit gemaak het nie. Polars 2.0 is strenger oor tipes.

Beteken strenger vroeër?

1:58 Die skemakontrole vang 'n ontbrekende kolom voordat enige data gelees word. Dit kan nie 'n cast vang wat op een ry misluk nie, want daardie fout wag vir die data. Nou die lus wat ek oopgemaak het.

Hoe kry ek die ou volgorde terug?

2:08 Die skakelaar leef op die join. Stel maintain order op die join, of voeg 'n sortering daarna by. Die gids stel die sortering voor. Die join-vlag het die volgorde behou in ons toetslopie, met die linkerkant se volgorde behou as links, regs. Uitspraak, onder die enjinkap: benodig hersiening.

Wat is die uitspraak?

2:22 Ek sou elke join hersien voordat ek opgradeer. Het jy 'n vraag hieroor? Plaas dit in die kommentaar. En dit is die verskil vir vandag. Ek is Niko van Axrisi. Samesmelt verantwoordelik.

Bronne

  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

Verwante video's