+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Polars 2.0: zergatiek batuketek ez duten jatorrizko lerroen ordena mantentzen

Polars 2.0-k collect-en exekuzioa streaming motor batean egiten du lehenetsita.

Polars 2.0-k collect-en exekuzioa streaming motor batean egiten du lehenetsita. Join, group_by eta unpivot-erako, bertsio honek ez du sarrerako lerro-ordena bermatzen, maintain_order edo sort esplizituki ezartzen ez baduzu. Polars 2.0.0-n egindako gure proban, 2.000.000 lerroko barne batuketak lerroak sarrerako ordenatik kanpo itzuli zituen lehenetsita, eta ordena mantendu zuen maintain_order ezarrita. Bertsioak, gainera, out-of-core spilling gaitzen du eta erreferentziazko proben aldarrikapenak saltzailearenak direla dio.

Irakurri idatzizko edizioa (ingelesez) ↗

Bideo honek zer jorratzen duen

  • Lazy kontsulta bati collect() deitzeak, orain, lehenetsita streaming motorra erabiltzen du, eta horrek ez du lerroen ordena bermatzen join, group_by eta unpivot-erako.
  • Migrazio-gidak dio ordena ez dela jada 2.0 aurreko ordena eta ez dagoela bermatuta; horren menpe bazaude, ordenatze esplizitua gomendatzen du.
  • Gure proban, barne batuketa lehenetsi batek sarrerako ordena False itzuli zuen; join-ean maintain_order="left_right" ezartzeak True itzuli zuen. Makina bat, exekuzio bat, join forma bat.
  • Out-of-core spilling lehenetsita dago: RAM-aren % 80 inguruan hasten da diskoan isurtzen, 64 GB-ko disko-aurrekontu lehenetsiarekin. Out-of-core join eta group_by bide-orrian daude.
  • collect_schema()-k falta den zutabe bat detektatzen du datuak irakurri aurretik, baina balio bakar batean huts egiten duen casting-ak collect()-ean bakarrik huts egiten du.
  • TPC-H eta TPC-DS konparaketa saltzailearen beraren exekuzio bat da datu eratorrietan, eta bere oharrak dio emaitzak ez direla erreferentziazko proba ofizialekin alderagarriak.

Itzulitako transkripzioa

Jatorrizko ingelesezko narraziotik itzulia. Eskuragarri dauden audioa eta azpitituluak YouTube-k kontrolatzen ditu.

Zergatik aldatu zen ordena lehenetsia?

0:00 Uste duzu batuketak zure lerroak idatzi zenituen ordenan itzultzen dizkizula. Polars 2.0-k, lehenetsita, hori agintzeari utzi zion, nahita. Bideo honetan: zergatik aldatu zen lehenetsia? Zer lortu zuen? Eta zein zure script hausten da lehenengo? Hau The Daily Diff da, azpian. Polars kode irekiko DataFrame liburutegi bat da: Python-etik deitzen duzun taula-motor bat,

0:20 nukleoa Rust-en idatzita dagoena. Doakoa da MIT lizentziapean, eta pip install polars-ekin instalatzen da. Xehetasun bat lehenik. Ordena zaharra berreskuratzen duen etengailua join-aren beraren argumentu bat da. Amaieran itzuliko naiz horretara. 2.0-tik aurrera, collect-ek streaming motorra exekutatzen du lehenetsita. Streaming-ek kontsulta paraleloki exekutatzen diren zatietan banatzen du, eta zatiak amaitzen dira amaitzen direnean.

0:42 Join, group by eta unpivot-erako, bertsioak ez du ordena bat agintzen. Nork jasotzen du lehenengo kolpea? Irteera gordetako fitxategi batekin konparatzen duenak, lerroz lerro. Proba horrek zure ordenagailu eramangarrian pasa dezake eta beste makina batean huts egin. Jarraian, migrazio-gida.

Zer agintzen du migrazio-gidak?

0:57 Dioenez, goian agertzen den lerroen ordena zehatza ez dago bermatuta. Beraz, ordenaren menpe bazaude, ordenatu esplizituki. Out-of-core ere lehenetsita dago. RAM-aren ehuneko laurogei inguruan hasten da diskora isurtzen, hirurogeita lau gigabyte-ko aurrekontuarekin. Ordenatzeak, leiho-funtzioek eta adierazpen askok isurketak egin ditzakete orain. Joins eta group-by-ak datoz.

Bidezkoa al da erreferentziazko proba?

1:17 Polars-ek dio DataFusion eta DuckDB gainditzen dituela TPC-H eta TPC-DS erreferentziazko probetan. Zenbakiak beren exekuzioetatik datoz, datu eratorrietan, eta haien oharrak dio ez direla emaitza ofizialekin alderagarriak. Beren zenbakiek diote Polars hirurehun zortzi aldiz azkarrago dela hamasei nukleotatik ehun laurogeita hamabira, TPC-H-n. Gainera, diote makina handiaren hari gehigarriek kontsulta txikiak moteldu egiten dituztela.

Zer ikusten dugu exekutatzean?

1:41 Join bera bi aldiz exekutatu genuen Polars 2.0.0-n. Exekuzio lehenetsiak lerroak nahasten ditu. Bandera ezarrita, sarrerako ordenak bizirauten du. Bilatu proba bat elikatzen duten join-ak. Ondoren ordenatzerik gabeko edozein join, inoiz hartu ez zenuen lerro-ordena erabaki bat da. Polars 2.0 zorrotzagoa da moten inguruan.

Zorroztasun handiagoak lehenago esan nahi du?

1:58 Eskemaren egiaztapenak falta den zutabe bat detektatzen du datuak irakurri aurretik. Ezin du lerro batean huts egiten duen casting-a harrapatu, errore hori datuen zain dagoelako. Orain, ireki nuen begizta.

Nola berreskuratzen dut ordena zaharra?

2:08 Etengailua join-ean dago. Ezarri maintain order join-ean, edo gehitu ordenatze bat ondoren. Gidak ordenatzea iradokitzen du. Join-aren banderak ordena mantendu zuen gure exekuzioan, ezkerreko aldearen ordena ezker, eskuin gisa mantenduz. Epaia, azpian: NEEDS REVIEW.

Zein da epaia?

2:22 Berritu aurretik join guztiak berrikusiko nituzke. Honen inguruko galderarik baduzu? Jarri iruzkinetan. Eta hori da gaurko ezberdintasuna. Ni Niko naiz Axrisi-koa. Fusionatu arduraz.

Iturriak

  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

Lotutako bideoak