+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Polars 2.0: niyə birləşmələr (join) artıq sətir qaydasını saxlamır

Polars 2.0 defolt olaraq yayımlanma mühərrikində "collect" əməliyyatını həyata keçirir.

Polars 2.0 defolt olaraq yayımlanma mühərrikində "collect" əməliyyatını həyata keçirir. Birləşmə, qruplama və sütunları açma əməliyyatları üçün, bu versiya "maintain_order" və ya "sort" açıq şəkildə təyin edilmədiyi təqdirdə daxil olan sətirlərin ardıcıllığını təmin etmir. Polars 2.0.0-da apardığımız sınaqda, 2.000.000 sətirlik daxili birləşmə defolt olaraq sətirləri daxili ardıcıllıqdan kənar qaydada qaytardı və "maintain_order" təyin edildikdə qaydanı qorudu. Bu versiya həmçinin yaddaş xaricində daşqını işə salır və bençmark iddialarını satıcının özünə aid edir.

Yazılı nəşri oxuyun (İngiliscə) ↗

Bu videoda nələr əhatə olunur

  • Ləng sorğuda collect() çağırılması artıq defolt olaraq axın mühərrikindən istifadə edir ki, bu da birləşmə, qruplama və sütunları açma üçün sətir qaydasını təmin etmir.
  • Miqrasiya bələdçisi bildirir ki, sətir qaydası artıq 2.0-dan əvvəlki qayda deyil və təmin edilmir; əgər siz ona güvənirsinizsə, açıq şəkildə sıralama tövsiyə edir.
  • Bizim sınağımızda, defolt daxili birləşmə daxili qaydanı Yanlış qaytardı; birləşmədə maintain_order="left_right" Doğru qaytardı. Bir maşın, bir sınaq, bir birləşmə forması.
  • Nüvə xaricində daşqın defolt olaraq aktivdir: təxminən 80% RAM-dan başlayır, 64 GB defolt disk büdcəsi ilə. Nüvə xaricində birləşmə və qruplama yol xəritəsindədir.
  • collect_schema() hər hansı bir məlumat oxunmadan əvvəl çatışmayan sütunu tutur, lakin yalnız bir dəyərdə uğursuz olan bir çevirmə yalnız collect() zamanı uğursuz olur.
  • TPC-H və TPC-DS müqayisəsi satıcının törəmə məlumatlar üzərində apardığı öz sınağıdır və onun qeydində nəticələrin rəsmi bençmarklarla müqayisə edilə bilməyəcəyi bildirilir.

Tərcümə olunmuş transkript

Orijinal ingilis dilindəki nəqldən tərcümə edilmişdir. Mövcud audio və subtitrlər YouTube tərəfindən idarə olunur.

Niyə defolt qayda dəyişdi?

0:00 Düşünürsünüz ki, birləşmə sətirlərinizi yazdığınız qaydada geri qaytarır. Polars 2.0 bunu qəsdən, defolt olaraq vəd etməyi dayandırdı. Bu videoda: niyə defolt dəyişdi? Nə qazandırdı? Və skriptlərinizin hansı birinci xarab olacaq? Bu, The Daily Diff, pərdə arxasında. Polars açıq mənbəli DataFrame kitabxanasıdır: Python-dan çağırdığınız bir cədvəl mühərriki,

0:20 əsas hissəsi Rust-da yazılmışdır. MIT lisenziyası altında pulsuzdur və onu pip install polars ilə quraşdırırsınız. Əvvəlcə bir detal. Köhnə qaydanı geri qaytaran açar birləşmənin özünə bir arqumentdir. Sonda ona qayıdacağam. 2.0-dan bəri, collect defolt olaraq axın mühərrikini işlədir. Axın sorğunu paralel işləyən hissələrə bölür, və hissələr işlədikləri zaman bitir.

0:42 Birləşmə, qruplama və sütunları açma üçün bu versiya bir sıra vəd etmir. Kim birinci zərbə alır? Hər kəs çıxışı yadda saxlanmış faylla sətirbəsətir müqayisə edir. Bu test noutbukunuzda keçə bilər, lakin başqa bir maşında uğursuz ola bilər. Növbəti, miqrasiya bələdçisi.

Miqrasiya bələdçisi nə vəd edir?

0:57 Deyir ki, yuxarıda göstərilən sətir qaydası təmin edilmir. Beləliklə, əgər qaydaya güvənirsinizsə, açıq şəkildə sıralayın. Nüvə xaricində iş də defolt olaraq aktivdir. RAM-ın təxminən səksən faizində diskə daşmağa başlayır, altmış dörd giqabaytlıq büdcə ilə. Sıralama, pəncərə funksiyaları və bir çox ifadə indi daşa bilər. Birləşmələr və qruplamalar gəlir.

Bençmark ədalətli döyüşdürmü?

1:17 Polars deyir ki, TPC-H və TPC-DS bençmarklarında DataFusion və DuckDB-ni üstələyir. Rəqəmlər öz sınaqlarından, törəmə məlumatlar üzərindədir, və onların qeydində rəsmi nəticələrlə müqayisə edilə bilməyəcəkləri bildirilir. Onların öz rəqəmləri deyir ki, Polars TPC-H-də on altı nüvədən yüz doxsan iki nüvəyə qədər təxminən üç nöqtə səkkiz dəfə daha sürətli olur. Onlar həmçinin deyirlər ki, böyük maşının əlavə ipləri kiçik sorğuları yavaşladır. Biz eyni birləşməni Polars 2.0.0-da iki dəfə işlətdik.

Onu işə saldığımızda nə görürük?

1:41 Defolt işləmə sətirləri qarışdırır. Bayraqla, giriş qaydası saxlanılır. Testi bəsləyən birləşmələri tapın. Arxasında sıralama olmayan hər hansı bir birləşmə, heç vaxt vermədiyiniz bir sətir qaydası qərarıdır. Polars 2.0 tiplər haqqında daha sərtdir. Şema yoxlaması hər hansı bir məlumat oxunmadan əvvəl çatışmayan sütunu tutur.

Daha sərt olmaq daha əvvəl deməkdirmi?

1:58 Bir sətirdə uğursuz olan bir çevirməni tuta bilməz, çünki bu səhv məlumatı gözləyir. İndi açdığım döngə. Açar birləşmə üzərində yaşayır.

Köhnə qaydanı necə geri qaytarıram?

2:08 Birləşmədə maintain order təyin edin, ya da ondan sonra bir sıralama əlavə edin. Bələdçi sıralama təklif edir. Birləşmə bayrağı bizim işimizdə qaydanı qorudu, sol tərəfin qaydası sol, sağ olaraq saxlandı. Hökm, pərdə arxasında: NEEDS REVIEW. Yeniləmədən əvvəl hər bir birləşməni nəzərdən keçirərdim.

Hökm nədir?

2:22 Bununla bağlı bir sualınız varmı? Şərhlərdə yazın. Və bugünkü fərq budur. Mən Axrisi-dən Nikonam. Məsuliyyətli şəkildə birləşdirin. Məsuliyyətli şəkildə birləşdirin.

Mənbələr

  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

Əlaqəli videolar