પોલાર્સ 2.0: જોડાણો હવે તેમની પંક્તિનો ક્રમ કેમ જાળવી રાખતા નથી
પોલાર્સ 2.0 ડિફોલ્ટ રૂપે સ્ટ્રીમિંગ એન્જિન પર કલેક્ટ ચલાવે છે.
પોલાર્સ 2.0 ડિફોલ્ટ રૂપે સ્ટ્રીમિંગ એન્જિન પર કલેક્ટ ચલાવે છે. જોડાણ, ગ્રુપ_બાય અને અનપિવટ માટે, આ રીલિઝ ઇનપુટ પંક્તિના ક્રમની ગેરંટી આપતું નથી જ્યાં સુધી તમે maintain_order સેટ ન કરો અથવા સ્પષ્ટપણે સૉર્ટ ન કરો. પોલાર્સ 2.0.0 પરના અમારા રનમાં, 2,000,000-પંક્તિનું ઇનર જોડાણ ડિફોલ્ટ રૂપે ઇનપુટ ક્રમની બહારની પંક્તિઓ પરત કરતું હતું અને maintain_order સેટ હોય ત્યારે ક્રમ જાળવી રાખતું હતું. આ રીલિઝ આઉટ-ઓફ-કોર સ્પિલિંગ પણ ચાલુ કરે છે અને બેન્ચમાર્ક દાવાઓને વિક્રેતાના પોતાના બનાવે છે.
લખેલી આવૃત્તિ વાંચો (અંગ્રેજી) ↗
આ વીડિયોમાં શું આવરી લેવામાં આવ્યું છે
- લેઝી ક્વેરી પર collect() કૉલ કરવાથી હવે ડિફોલ્ટ રૂપે સ્ટ્રીમિંગ એન્જિનનો ઉપયોગ થાય છે, જે જોડાણ, ગ્રુપ_બાય અને અનપિવટ માટે પંક્તિના ક્રમની ગેરંટી આપતું નથી.
- માઇગ્રેશન ગાઇડ કહે છે કે ક્રમ હવે પૂર્વ-2.0 ક્રમ નથી અને તેની ગેરંટી નથી; જો તમે તેના પર આધાર રાખો છો તો તે સ્પષ્ટ સૉર્ટની ભલામણ કરે છે.
- અમારા રનમાં, ડિફોલ્ટ ઇનર જોડાણે ઇનપુટ ક્રમ ખોટો પરત કર્યો; જોડાણ પર maintain_order="left_right" સેટ કરવાથી સાચો પરત થયો. એક મશીન, એક રન, એક જોડાણ આકાર.
- આઉટ-ઓફ-કોર સ્પિલિંગ ડિફોલ્ટ રૂપે ચાલુ છે: તે RAM ના લગભગ 80% પર શરૂ થાય છે, જેમાં 64 GB ડિફોલ્ટ ડિસ્ક બજેટ હોય છે. આઉટ-ઓફ-કોર જોડાણ અને ગ્રુપ_બાય રોડમેપ પર છે.
- collect_schema() કોઈપણ ડેટા વાંચવામાં આવે તે પહેલાં ગુમ થયેલ કૉલમ પકડે છે, પરંતુ એક મૂલ્ય પર નિષ્ફળ થતો કાસ્ટ ફક્ત collect() પર નિષ્ફળ થાય છે.
- TPC-H અને TPC-DS સરખામણી એ વ્યુત્પન્ન ડેટા પર વિક્રેતાનો પોતાનો રન છે, અને તેના ફૂટનોટ કહે છે કે પરિણામો સત્તાવાર બેન્ચમાર્ક્સ સાથે તુલનાત્મક નથી.
અનુવાદિત ટ્રાન્સક્રિપ્ટ
મૂળ અંગ્રેજી કથામાંથી અનુવાદિત. ઉપલબ્ધ ઑડિઓ અને કૅપ્શન્સ YouTube દ્વારા નિયંત્રિત થાય છે.
ડિફોલ્ટ ક્રમ કેમ બદલાયો?
0:00 તમે વિચારો છો કે જોડાણ તમારી પંક્તિઓ તમને તે ક્રમમાં પાછી આપે છે જેમાં તમે તેમને લખી હતી. પોલાર્સ 2.0 એ ડિફોલ્ટ રૂપે, ઇરાદાપૂર્વક, તે વચન આપવાનું બંધ કરી દીધું. આ વીડિયોમાં: ડિફોલ્ટ કેમ બદલાયું? તેનાથી શું મળ્યું? અને તમારા કયા સ્ક્રિપ્ટો પહેલા તૂટે છે? આ ધ ડેઇલી ડિફ છે, અંડર ધ હૂડ. પોલાર્સ એક ઓપન-સોર્સ ડેટાફ્રેમ લાઇબ્રેરી છે: એક ટેબલ એન્જિન જેને તમે પાયથોનમાંથી કૉલ કરો છો,
0:20 જેનું મુખ્ય ભાગ રસ્ટમાં લખાયેલું છે. તે MIT લાઇસન્સ હેઠળ મફત છે, અને તમે તેને pip install polars સાથે ઇન્સ્ટોલ કરો છો. પહેલા એક વિગત. જૂનો ક્રમ પાછો લાવનાર સ્વીચ એ જોડાણનો જ એક દલીલ છે. હું તેના પર અંતે પાછો આવીશ. 2.0 થી, કલેક્ટ ડિફોલ્ટ રૂપે સ્ટ્રીમિંગ એન્જિન ચલાવે છે. સ્ટ્રીમિંગ ક્વેરીને સમાંતરમાં ચાલતા ટુકડાઓમાં વિભાજિત કરે છે, અને ટુકડાઓ જ્યારે પૂરા થાય ત્યારે પૂરા થાય છે.
0:42 જોડાણ, ગ્રુપ બાય અને અનપિવટ માટે, આ રીલિઝ કોઈ ક્રમનું વચન આપતું નથી. પહેલા કોને અસર થાય છે? જે કોઈ પણ આઉટપુટને સાચવેલી ફાઇલ સાથે, પંક્તિ દર પંક્તિ, સરખાવે છે. તે પરીક્ષણ તમારા લેપટોપ પર પાસ થઈ શકે છે અને બીજા મશીન પર નિષ્ફળ થઈ શકે છે. આગળ, માઇગ્રેશન ગાઇડ.
માઇગ્રેશન ગાઇડ શું વચન આપે છે?
0:57 તે કહે છે કે ઉપર બતાવેલ ચોક્કસ પંક્તિનો ક્રમ ગેરંટી નથી. તેથી જો તમે ક્રમ પર આધાર રાખો છો, તો સ્પષ્ટપણે સૉર્ટ કરો. આઉટ-ઓફ-કોર પણ ડિફોલ્ટ રૂપે ચાલુ છે. તે RAM ના લગભગ એંસી ટકા પર ડિસ્ક પર સ્પિલિંગ શરૂ કરે છે, ચોસઠ ગીગાબાઇટ બજેટ સાથે. સૉર્ટ, વિન્ડો ફંક્શન્સ અને ઘણા અભિવ્યક્તિઓ હવે સ્પિલ કરી શકે છે. જોડાણો અને ગ્રુપ-બાય્સ આવી રહ્યા છે.
શું બેન્ચમાર્ક એક યોગ્ય લડાઈ છે?
1:17 પોલાર્સ કહે છે કે તે TPC-H અને TPC-DS પર DataFusion અને DuckDB ને હરાવે છે બેન્ચમાર્ક્સ. આ સંખ્યાઓ તેમના પોતાના રનમાંથી આવે છે, વ્યુત્પન્ન ડેટા પર, અને તેમના ફૂટનોટ કહે છે કે તે સત્તાવાર પરિણામો સાથે તુલનાત્મક નથી. તેમની પોતાની સંખ્યાઓ કહે છે કે TPC-H પર પોલાર્સ સોળ કોરથી એકસો નેવું-બે સુધી લગભગ ત્રણ પોઇન્ટ આઠ ગણું ઝડપી બને છે. ટીપીસી-એચ પર સોળ કોરથી એકસો નેવું-બે સુધી લગભગ ત્રણ પોઇન્ટ આઠ ગણું ઝડપી બને છે. તેઓ એ પણ કહે છે કે મોટી મશીનની વધારાની થ્રેડો નાની ક્વેરીને ધીમી પાડે છે.
જ્યારે આપણે તેને ચલાવીએ છીએ ત્યારે આપણે શું જોઈએ છીએ?
1:41 અમે Polars 2.0.0 પર સમાન જોડાણ બે વાર ચલાવ્યું. ડિફોલ્ટ રન પંક્તિઓને શફલ કરે છે. ફ્લેગ સાથે, ઇનપુટ ક્રમ ટકી રહે છે. તે જોડાણો શોધો જે પરીક્ષણને ફીડ કરે છે. તે પછી સૉર્ટ વિનાનું કોઈપણ જોડાણ એ પંક્તિના ક્રમનો નિર્ણય છે જે તમે ક્યારેય લીધો નથી. પોલાર્સ 2.0 પ્રકારો વિશે વધુ કડક છે.
શું કડક એટલે વહેલું?
1:58 સ્કિમા ચેક કોઈપણ ડેટા વાંચવામાં આવે તે પહેલાં ગુમ થયેલ કૉલમ પકડે છે. તે એક પંક્તિ પર નિષ્ફળ થતા કાસ્ટને પકડી શકતું નથી, કારણ કે તે ભૂલ ડેટાની રાહ જુએ છે. હવે મેં ખોલેલો લૂપ.
હું જૂનો ક્રમ કેવી રીતે પાછો મેળવી શકું?
2:08 સ્વીચ જોડાણ પર રહે છે. જોડાણ પર maintain order સેટ કરો, અથવા તે પછી સૉર્ટ ઉમેરો. ગાઇડ સૉર્ટ સૂચવે છે. જોડાણ ફ્લેગે અમારા રનમાં ક્રમ જાળવી રાખ્યો, જેમાં ડાબી બાજુનો ક્રમ ડાબી, જમણી તરીકે જાળવી રાખવામાં આવ્યો. ચુકાદો, અંડર ધ હૂડ: રિવ્યુની જરૂર છે.
ચુકાદો શું છે?
2:22 હું અપગ્રેડ કરતા પહેલા દરેક જોડાણની સમીક્ષા કરીશ. આ વિશે કોઈ પ્રશ્ન છે? તેને ટિપ્પણીઓમાં મૂકો. અને તે આજનો તફાવત છે. હું એક્સ્રિસીમાંથી નિકો છું. જવાબદારીપૂર્વક મર્જ કરો.
સ્ત્રોતો
- 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



