Поларс 2.0: зашто спајања више не задржавају ред редова
Поларс 2.0 подразумевано покреће "цоллецт" на стриминг механизму.
Поларс 2.0 подразумевано покреће "цоллецт" на стриминг механизму. За спајање, груписање ("гроуп_би") и "унпивот", издање више не гарантује ред улазних редова осим ако експлицитно не подесите "маинтаин_ордер" или "сорт". У нашем покретању на Поларс 2.0.0, унутрашње спајање од 2.000.000 редова вратило је редове ван улазног реда подразумевано и задржало је ред са подешеним "маинтаин_ордер". Издање такође укључује "оут-оф-цоре спиллинг" и чини тврдње о бенчмарку власништвом добављача.
Прочитајте писано издање (енглески) ↗
Шта овај видео покрива
- Позивање "цоллецт()" на лењом упиту сада подразумевано користи стриминг механизам, који не гарантује ред редова за спајање, груписање ("гроуп_би") и "унпивот".
- Водич за миграцију каже да ред више није ред пре 2.0 и није гарантован; препоручује експлицитно сортирање ако се на њега ослањате.
- У нашем покретању, подразумевано унутрашње спајање вратило је улазни ред False; "маинтаин_ордер=\"лефт_ригхт\"" на спајању вратило је True. Једна машина, једно покретање, један облик спајања.
- Изливање ван језгра ("оут-оф-цоре спиллинг") је подразумевано укључено: почиње на око 80 % РАМ-а, са подразумеваним буџетом диска од 64 ГБ. Спајање и груписање ван језгра су на плану.
- "цоллецт_сцхема()" хвата колону која недостаје пре него што се подаци прочитају, али каст који не успе на само једној вредности не успева тек на "цоллецт()".
- Поређење ТПЦ-Х и ТПЦ-ДС је добављачево сопствено покретање на изведеним подацима, а његова фуснота каже да резултати нису упоредиви са званичним бенчмарковима.
Преведени транскрипт
Преведено са оригиналне енглеске нарације. Доступни аудио и титлови контролисани су од стране YouTube-а.
Зашто се подразумевани редослед променио?
0:00 Мислите да вам спајање враћа редове у редоследу у којем сте их написали. Поларс 2.0 је престао то да обећава, подразумевано, намерно. У овом видеу: зашто се подразумевано променило? Шта је добило? И који од ваших скрипти ће се први покварити? Ово је The Daily Diff, испод хаубе. Поларс је библиотека отвореног кода за ДатаФраме: енџин табеле који позивате из Пајтона,
0:20 са својим језгром написаним у Русту. Бесплатан је под МИТ лиценцом, и инсталирате га са "пип инсталл поларс". Прво један детаљ. Прекидач који враћа стари редослед је аргумент самог спајања. Вратићу се на то на крају. Од 2.0, "цоллецт" подразумевано покреће стриминг енџин. Стриминг дели упит на делове који се покрећу паралелно, и делови се завршавају када се заврше.
0:42 За спајање, груписање и "унпивот", издање не обећава редослед. Ко први страда? Ко год упоређује излаз са сачуваном датотеком, ред по ред. Тај тест може проћи на вашем лаптопу, а не успети на другој машини. Даље, водич за миграцију.
Шта обећава водич за миграцију?
0:57 Каже да тачан редослед редова приказан изнад није гарантован. Дакле, ако се ослањате на редослед, сортирајте експлицитно. Изливање ван језгра је такође подразумевано укључено. Почиње да се излива на диск на око осамдесет посто РАМ-а, са буџетом од шездесет четири гигабајта. Сортирање, прозорске функције и многи изрази сада могу да се изливају. Спајања и груписања долазе.
Да ли је бенчмарк фер борба?
1:17 Поларс каже да надмашује ДатаФусион и ДуцкДБ на ТПЦ-Х и ТПЦ-ДС бенчмарковима. Бројеви долазе из њихових сопствених покретања, на изведеним подацима, а њихова фуснота каже да нису упоредиви са званичним резултатима. Њихови сопствени бројеви кажу да Поларс постаје око три тачка осам пута бржи од шеснаест језгара до сто деведесет два, на ТПЦ-Х. Такође кажу да додатни нити велике машине успоравају мале упите.
Шта видимо када га покренемо?
1:41 Покренули смо исто спајање два пута на Поларс 2.0.0. Подразумевано покретање премешта редове. Са заставом, улазни редослед опстаје. Пронађите спајања која напајају тест. Било које спајање без сортирања после њега је одлука о редоследу редова коју никада нисте донели. Поларс 2.0 је строжији по питању типова.
Да ли строже значи раније?
1:58 Провера шеме хвата колону која недостаје пре него што се било који податак прочита. Не може да ухвати каст који не успе на једном реду, јер та грешка чека податке. Сада петља коју сам отворио.
Како да вратим стари редослед?
2:08 Прекидач живи на спајању. Подесите "маинтаин ордер" на спајању, или додајте сортирање после њега. Водич предлаже сортирање. Застава спајања је задржала редослед у нашем покретању, са редоследом леве стране задржаним као лево, десно. Пресуда, испод хаубе: НЕЕДС РЕВИЕW.
Која је пресуда?
2:22 Прегледао бих свако спајање пре надоградње. Имате питање о овоме? Поставите га у коментарима. И то је дифф за данас. Ја сам Нико из Axrisi. Спајајте одговорно.
Извори
- Release of Polars 2.0Polars (pola.rs)
- Polars 2.0 upgrade guidePolars documentation
- Polars homepagePolars (pola.rs)
- polars-2.0-benchmark repositoryPolars on GitHub
- Release of Polars 2.0 (Hacker News discussion)Hacker News



