+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Polars 2.0: nima uchun birlashmalar endi qator tartibini saqlamaydi

Polars 2.0 sukut boʻyicha oqim dvigatelida "collect"ni ishga tushiradi.

Polars 2.0 sukut boʻyicha oqim dvigatelida "collect"ni ishga tushiradi. Birlashma (join), group_by va unpivot uchun, agar siz maintain_order yoki sortni aniq sozlamasangiz, chiqarilgan versiya endi kiritilgan qator tartibini kafolatlamaydi. Polars 2.0.0 dagi ishimizda, 2 000 000 qatorli ichki birlashma (inner join) qatorlarni sukut boʻyicha kiritilgan tartibdan tashqarida qaytardi va maintain_order oʻrnatilgan holda tartibni saqlab qoldi. Chiqarilgan versiya shuningdek, yadro tashqarisiga toʻkishni (out-of-core spilling) yoqadi va benchmark daʼvolarini sotuvchining oʻziniki qiladi.

Yozma nashrini oʻqing (inglizcha) ↗

Bu video nimani qamrab oladi

  • Lozim soʻrovda collect() chaqiruvi endi sukut boʻyicha oqim dvigatelidan foydalanadi, bu birlashma (join), group_by va unpivot uchun qator tartibini kafolatlamaydi.
  • Migratsiya qoʻllanmasida aytilishicha, tartib endi 2.0 dan oldingi tartib emas va kafolatlanmaydi; agar siz unga tayansangiz, aniq tartiblashni tavsiya qiladi.
  • Bizning ishimizda, sukut boʻyicha ichki birlashma (inner join) kiritish tartibini notoʻgʻri qaytardi; birlashmada maintain_order="left_right" toʻgʻri qaytardi. Bir mashina, bir ishga tushirish, bir birlashma shakli.
  • Yadro tashqarisiga toʻkish (Out-of-core spilling) sukut boʻyicha yoqilgan: u RAM ning taxminan 80% dan boshlanadi, sukut boʻyicha 64 GB disk byudjeti bilan. Yadro tashqarisidagi birlashma (join) va group_by yoʻl xaritasida.
  • collect_schema() maʼlumotlar oʻqilmasdan oldin yoʻqolgan ustunni ushlab oladi, lekin bitta qiymatda muvaffaqiyatsiz boʻlgan tur oʻzgartirish (cast) faqat collect() da muvaffaqiyatsiz boʻladi.
  • TPC-H va TPC-DS taqqoslash vendorning oʻzi tomonidan olingan maʼlumotlar boʻyicha oʻz ishga tushirishi boʻlib, uning izohida natijalar rasmiy benchmarklar bilan solishtirish mumkin emasligi aytiladi.

Tarjima qilingan transkript

Asl inglizcha hikoyadan tarjima qilingan. Mavjud audio va subtitrlar YouTube tomonidan boshqariladi.

Nima uchun sukut boʻyicha tartib oʻzgardi?

0:00 Siz birlashma qatorlaringizni siz yozgan tartibda qaytaradi deb oʻylaysiz. Polars 2.0 buni sukut boʻyicha, atayin vaʼda qilishni toʻxtatdi. Bu videoda: nima uchun sukut boʻyicha oʻzgarish yuz berdi? U nimani sotib oldi? Va qaysi skriptlaringiz birinchi boʻlib ishdan chiqadi? Bu The Daily Diff, ichki tomondan. Polars ochiq manbali DataFrame kutubxonasi: Python dan chaqiradigan jadval dvigateli,

0:20 uning yadrosi Rust da yozilgan. U MIT litsenziyasi ostida bepul va siz uni pip install polars bilan oʻrnatasiz. Avvalo bitta tafsilot. Eski tartibni qaytaradigan kalitning oʻzi birlashmaga argumentdir. Men unga oxirida qaytaman. 2.0 dan beri collect sukut boʻyicha oqim dvigatelini ishga tushiradi. Oqim soʻrovni parallel ravishda ishlaydigan qismlarga ajratadi, va qismlar tugagach tugaydi.

0:42 Birlashma (join), group by va unpivot uchun, chiqarilgan versiya tartibni vaʼda qilmaydi. Kim birinchi boʻlib zarba oladi? Kimki chiqishni saqlangan fayl bilan, qatorma-qator solishtirsa. Bu sinov noutbukingizda oʻtishi mumkin va boshqa mashinada muvaffaqiyatsiz boʻlishi mumkin. Keyin, migratsiya qoʻllanmasi.

Migratsiya qoʻllanmasi nimani vaʼda qiladi?

0:57 Unda aytilishicha, yuqorida koʻrsatilgan aniq qator tartibi kafolatlanmaydi. Shunday qilib, agar siz tartibga tayansangiz, aniq tartiblang. Yadro tashqarisiga toʻkish (Out-of-core) ham sukut boʻyicha yoqilgan. U RAM ning taxminan sakson foizida diskka toʻkishni boshlaydi, oltmish toʻrt gigabaytlik byudjet bilan. Sort, oynali funksiyalar va koʻplab ifodalar endi toʻkishi mumkin. Birlashmalar (joins) va group-by lar kelmoqda.

Benchmark adolatli kurashmi?

1:17 Polars TPC-H va TPC-DS benchmarklarida DataFusion va DuckDB ni magʻlub etadi deydi. Raqamlar ularning oʻz ishga tushirishlaridan, olingan maʼlumotlar boʻyicha, va ularning izohida rasmiy natijalar bilan solishtirish mumkin emasligi aytilgan. Ularning oʻz raqamlari Polars TPC-H da oʻn olti yadrodan bir yuz toʻqson ikki yadrogacha taxminan uch butun sakkiz barobar tezroq boʻlishini koʻrsatadi. Ular shuningdek, katta mashinaning qoʻshimcha iplari kichik soʻrovlarni sekinlashtirishini aytishadi. Biz Polars 2.0.0 da xuddi shu birlashmani ikki marta ishga tushirdik.

Uni ishga tushirganimizda nimani koʻramiz?

1:41 Sukut boʻyicha ishga tushirish qatorlarni aralashtiradi. Bayroq bilan, kiritilgan tartib saqlanib qoladi. Sinovni taʼminlaydigan birlashmalarni toping. Keyin tartiblashsiz har qanday birlashma siz hech qachon qilmagan qator tartibini belgilashdir. Polars 2.0 turlar boʻyicha qattiqroq. Schema tekshiruvi maʼlumotlar oʻqilmasdan oldin yoʻqolgan ustunni ushlab oladi.

Qattiqroq degani ertaroq deganimi?

1:58 U bitta qatorda muvaffaqiyatsiz boʻlgan tur oʻzgartirishni (cast) ushlab ololmaydi, chunki bu xato maʼlumotlarni kutadi. Endi men ochgan aylanma. Kalit birlashmada joylashgan.

Eski tartibni qanday qaytaraman?

2:08 Birlashmada maintain order ni oʻrnating yoki undan keyin tartiblash qoʻshing. Qoʻllanma tartiblashni taklif qiladi. Birlashma bayrogʻi bizning ishimizda tartibni saqlab qoldi, chap tomonning tartibi chap, oʻng sifatida saqlanib qoldi. Hukm, ichki tomondan: NEEDS REVIEW. Yangilashdan oldin har bir birlashmani koʻrib chiqardim.

Hukm nima?

2:22 Bu haqda savolingiz bormi? Izohlarga yozing. Va bugungi farq shu. Men Axrisi dan Niko. Masʼuliyat bilan birlashtiring. Masʼuliyat bilan birlashtiring.

Manbalar

  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

Tegishli videolar