+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Polars 2.0: kwa nini viunganishi havihifadhi tena mpangilio wa safu zao

Polars 2.0 huendesha collect kwenye injini ya utiririshaji kwa chaguo-msingi.

Polars 2.0 huendesha collect kwenye injini ya utiririshaji kwa chaguo-msingi. Kwa join, group_by na unpivot, toleo halihakikishi tena mpangilio wa safu ya ingizo isipokuwa uweke maintain_order au upange wazi. Katika uendeshaji wetu kwenye polars 2.0.0, muunganisho wa ndani wa safu 2,000,000 ulirudisha safu nje ya mpangilio wa ingizo kwa chaguo-msingi na ukaweka mpangilio na maintain_order imewekwa. Toleo pia huwasha out-of-core spilling na hufanya madai ya benchmark kuwa ya mtoa huduma.

Soma toleo lililoandikwa (Kiingereza) ↗

Nini video hii inashughulikia

  • Kupiga collect() kwenye swali la uvivu sasa hutumia injini ya utiririshaji kwa chaguo-msingi, ambayo haihakikishi mpangilio wa safu kwa join, group_by na unpivot.
  • Mwongozo wa uhamiaji unasema mpangilio sio tena mpangilio wa kabla ya 2.0 na hauhakikishiwi; inapendekeza upangaji wazi ikiwa unautegemea.
  • Katika uendeshaji wetu, muunganisho wa ndani wa chaguo-msingi ulirudisha mpangilio wa ingizo False; maintain_order="left_right" kwenye muunganisho ulirudisha True. Mashine moja, uendeshaji mmoja, sura moja ya muunganisho.
  • Out-of-core spilling imewashwa kwa chaguo-msingi: inaanza kwa takriban asilimia 80 ya RAM, na bajeti ya diski ya GB 64 kwa chaguo-msingi. Out-of-core join na group_by ziko kwenye ramani ya barabara.
  • collect_schema() inakamata safu inayokosekana kabla data yoyote haijasomwa, lakini ubadilishaji unaoshindwa kwenye thamani moja tu hushindwa kwenye collect().
  • Ulinganisho wa TPC-H na TPC-DS ni uendeshaji wa mtoa huduma mwenyewe kwenye data iliyopatikana, na maelezo yake ya chini yanasema matokeo hayawezi kulinganishwa na vigezo rasmi.

Nakala iliyotafsiriwa

Imetafsiriwa kutoka simulizi asili ya Kiingereza. Sauti na manukuu yanayopatikana yanadhibitiwa na YouTube.

Kwa nini mpangilio wa chaguo-msingi ulibadilika?

0:00 Unafikiri muunganisho unakurudishia safu zako kwa mpangilio ulioziandika. Polars 2.0 iliacha kuahidi hilo, kwa chaguo-msingi, kwa makusudi. Katika video hii: kwa nini chaguo-msingi ilibadilika? Ilinunua nini? Na ni hati ipi kati ya zako inavunjika kwanza? Hii ni The Daily Diff, chini ya kofia. Polars ni maktaba ya DataFrame ya chanzo huria: injini ya jedwali unayoiita kutoka Python,

0:20 ikiwa na msingi wake umeandikwa kwa Rust. Ni bure chini ya leseni ya MIT, na unaiweka na pip install polars. Maelezo moja kwanza. Swichi inayoleta mpangilio wa zamani nyuma ni hoja kwa muunganisho wenyewe. Nitarudi kwake mwishoni. Tangu 2.0, collect huendesha injini ya utiririshaji kwa chaguo-msingi. Utiririshaji hugawanya swali katika vipande vinavyoendesha sambamba, na vipande huisha vinapoisha.

0:42 Kwa join, group by na unpivot, toleo haliahidi mpangilio. Nani atapigwa kwanza? Yeyote anayelinganisha pato na faili iliyohifadhiwa, safu kwa safu. Jaribio hilo linaweza kufaulu kwenye kompyuta yako ndogo na kushindwa kwenye mashine tofauti. Kisha, mwongozo wa uhamiaji.

Mwongozo wa uhamiaji unaahidi nini?

0:57 Inasema mpangilio kamili wa safu ulioonyeshwa hapo juu hauhakikishiwi. Kwa hivyo ikiwa unategemea mpangilio, panga waziwazi. Out-of-core imewashwa kwa chaguo-msingi pia. Inaanza kumwaga kwenye diski kwa takriban asilimia themanini ya RAM, ikiwa na bajeti ya gigabyte sitini na nne. Panga, vitendaji vya dirisha na maneno mengi yanaweza kumwagika sasa. Joins na group-bys zinakuja.

Je, benchmark ni mapambano ya haki?

1:17 Polars inasema inashinda DataFusion na DuckDB kwenye TPC-H na TPC-DS vigezo. Nambari zinatoka kwenye uendeshaji wao wenyewe, kwenye data iliyopatikana, na maelezo yao ya chini yanasema hayawezi kulinganishwa na matokeo rasmi. Nambari zao wenyewe zinasema Polars inapata haraka mara tatu nukta nane kutoka cores kumi na sita hadi mia moja tisini na mbili, kwenye TPC-H. Pia wanasema nyuzi za ziada za mashine kubwa hupunguza maswali madogo.

Tunaona nini tunapouendesha?

1:41 Tuliendesha muunganisho huo huo mara mbili kwenye Polars 2.0.0. Uendeshaji wa chaguo-msingi huchanganya safu. Na bendera, mpangilio wa ingizo huishi. Pata miunganisho inayolisha jaribio. Muunganisho wowote bila upangaji baada yake ni uamuzi wa mpangilio wa safu ambao haukuwahi kufanya. Polars 2.0 ni kali zaidi kuhusu aina.

Je, ukali zaidi unamaanisha mapema?

1:58 Hundi ya schema inakamata safu inayokosekana kabla data yoyote haijasomwa. Haiwezi kukamata ubadilishaji unaoshindwa kwenye safu moja, kwa sababu hitilafu hiyo inangojea data. Sasa kitanzi nilichofungua.

Nitarudishaje mpangilio wa zamani?

2:08 Swichi huishi kwenye muunganisho. Weka maintain order kwenye muunganisho, au ongeza upangaji baada yake. Mwongozo unapendekeza upangaji. Bendera ya muunganisho iliweka mpangilio katika uendeshaji wetu, na mpangilio wa upande wa kushoto ulihifadhiwa kama kushoto, kulia. Uamuzi, chini ya kofia: NEEDS REVIEW.

Uamuzi ni nini?

2:22 Ningepitia kila muunganisho kabla ya kuboresha. Una swali kuhusu hili? Liweke kwenye maoni. Na hiyo ndio tofauti kwa leo. Mimi ni Niko kutoka Axrisi. Unganisha kwa uwajibikaji.

Vyanzo

  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

Video zinazohusiana