# Polars 2.0: зошто спојувањата повеќе не го задржуваат редоследот на редовите

Published: 2026-10-08

Polars 2.0 стандардно работи колекција на стриминг машина. За спојување, group\_by и unpivot, изданието повеќе не го гарантира редоследот на влезните редови, освен ако експлицитно не поставите maintain\_order или sort. Во нашето извршување на polars 2.0.0, внатрешно спојување од 2.000.000 редови стандардно врати редови надвор од влезниот редослед и го задржа редоследот со поставено maintain\_order. Изданието, исто така, го вклучува out-of-core spilling и ги прави тврдењата за бенчмаркот сопствени на продавачот.

Canonical: https://thedailydiff.dev/mk/video/polars-2-row-order/

## Што покрива ова видео

- Повикувањето collect() на мрзливо барање сега стандардно го користи стриминг моторот, кој не гарантира редослед на редови за join, group\_by и unpivot.
- Упатството за миграција вели дека редоследот повеќе не е редослед пред 2.0 и не е гарантиран; препорачува експлицитно сортирање ако се потпирате на него.
- Во нашето извршување, стандардното внатрешно спојување врати влезен редослед Неточно; maintain\_order="left\_right" на спојувањето врати Точно. Една машина, едно извршување, една форма на спојување.
- Истурањето надвор од јадрото е стандардно вклучено: започнува на околу 80% од RAM меморијата, со стандарден буџет за диск од 64 GB. Спојувањето и group\_by надвор од јадрото се на патоказот.
- collect\_schema() фаќа колона што недостасува пред да се прочитаат какви било податоци, но каст што не успева на една вредност не успева само при collect().
- Споредбата TPC-H и TPC-DS е сопствено извршување на продавачот на изведени податоци, а нејзината фуснота вели дека резултатите не се споредливи со официјалните бенчмарци.

## Поглавја

- 0:00 Зошто се промени стандардниот редослед?
- 0:56 Што ветува водичот за миграција?
- 1:17 Дали бенчмаркот е фер борба?
- 1:41 Што гледаме кога го извршуваме?
- 1:56 Дали построгото значи порано?
- 2:07 Како да го вратам стариот редослед?
- 2:20 Која е пресудата?

## Преведен транскрипт

Преведено од оригиналната англиска нарација. Достапното аудио и наслови се контролирани од YouTube.

### Зошто се промени стандардниот редослед?

0:00 Мислите дека спојувањето ви ги враќа редовите по редослед по кој сте ги напишале. Polars 2.0 престана да го ветува тоа, стандардно, намерно. Во ова видео: зошто се промени стандардната поставка? Што доби? И кој од вашите скрипти прво се расипува? Ова е The Daily Diff, под хаубата. Polars е библиотека за DataFrame со отворен код: мотор за табели што го повикувате од Python,

0:20 со неговото јадро напишано во Rust. Бесплатно е под MIT лиценца, а го инсталирате со pip install polars. Прво еден детал. Прекинувачот што го враќа стариот редослед е аргумент на самото спојување. Ќе се вратам на тоа на крајот. Од 2.0, collect стандардно го извршува стриминг моторот. Стримингот го дели барањето на парчиња што работат паралелно, а парчињата завршуваат кога ќе завршат.

0:42 За спојување, group by и unpivot, изданието не ветува редослед. Кој прв ќе биде погоден? Секој што го споредува излезот со зачувана датотека, ред по ред. Тој тест може да помине на вашиот лаптоп и да не успее на друга машина. Следно, водичот за миграција.

### Што ветува водичот за миграција?

0:57 Во него пишува дека точниот редослед на редови прикажан погоре не е гарантиран. Значи, ако се потпирате на редоследот, сортирајте експлицитно. Истурањето надвор од јадрото е стандардно вклучено. Почнува да се истура на диск на околу осумдесет проценти од RAM меморијата, со буџет од шеесет и четири гигабајти. Сортирањето, функциите на прозорци и многу изрази сега можат да се истураат. Доаѓаат спојувања и group-by.

### Дали бенчмаркот е фер борба?

1:17 Polars вели дека ги победува DataFusion и DuckDB на TPC-H и TPC-DS бенчмарци. Бројките доаѓаат од нивните сопствени извршувања, на изведени податоци, а нивната фуснота вели дека не се споредливи со официјалните резултати. Нивните сопствени бројки велат дека Polars е околу три пати и осум десетини побрз од шеснаесет јадра до сто деветдесет и две, на TPC-H. Тие, исто така, велат дека дополнителните нишки на големата машина ги забавуваат малите барања.

### Што гледаме кога го извршуваме?

1:41 Го извршивме истото спојување двапати на Polars 2.0.0. Стандардното извршување ги промешува редовите. Со знамето, влезниот редослед опстојува. Најдете ги спојувањата што напојуваат тест. Секое спојување без сортирање после него е одлука за редоследот на редовите што никогаш не сте ја донеле. Polars 2.0 е построг за типовите.

### Дали построгото значи порано?

1:58 Проверката на шемата фаќа колона што недостасува пред да се прочитаат какви било податоци. Не може да фати каст што не успева на еден ред, бидејќи таа грешка чека на податоците. Сега јамката што ја отворив.

### Како да го вратам стариот редослед?

2:08 Прекинувачот живее на спојувањето. Поставете maintain order на спојувањето, или додадете сортирање после него. Водичот го сугерира сортирањето. Знамето за спојување го задржа редоследот во нашето извршување, со редоследот на левата страна задржан како лево, десно. Пресуда, под хаубата: ПОТРЕБЕН Е ПРЕГЛЕД.

### Која е пресудата?

2:22 Би го прегледал секое спојување пред да надградам. Имате прашање за ова? Ставете го во коментарите. И тоа е разликата за денес. Јас сум Нико од Axrisi. Спојувајте одговорно.

## Извори

- [Release of Polars 2.0](https://pola.rs/posts/release-polars-2/) — Polars (pola.rs)
- [Polars 2.0 upgrade guide](https://docs.pola.rs/releases/upgrade/2/) — Polars documentation
- [Polars homepage](https://pola.rs/) — Polars (pola.rs)
- [polars-2.0-benchmark repository](https://github.com/pola-rs/polars-2.0-benchmark) — Polars on GitHub
- [Release of Polars 2.0 (Hacker News discussion)](https://news.ycombinator.com/item?id=49977177) — Hacker News
