പോളാർസ് 2.0: എന്തുകൊണ്ട് ജോയിനുകൾക്ക് ഇനി റോ ഓർഡർ നിലനിർത്താനാകില്ല
പോളാർസ് 2.0 ഡിഫോൾട്ടായി സ്ട്രീമിംഗ് എഞ്ചിനിൽ കളക്ട് പ്രവർത്തിപ്പിക്കുന്നു.
പോളാർസ് 2.0 ഡിഫോൾട്ടായി സ്ട്രീമിംഗ് എഞ്ചിനിൽ കളക്ട് പ്രവർത്തിപ്പിക്കുന്നു. ജോയിൻ, ഗ്രൂപ്പ്_ബൈ, അൺപിവോട്ട് എന്നിവയ്ക്ക്, നിങ്ങൾ maintain_order സജ്ജീകരിക്കുകയോ അല്ലെങ്കിൽ വ്യക്തമായി സോർട്ട് ചെയ്യുകയോ ചെയ്യാത്തപക്ഷം ഇൻപുട്ട് റോ ഓർഡർ ഈ റിലീസ് ഇനി ഉറപ്പുനൽകുന്നില്ല. പോളാർസ് 2.0.0-ലെ ഞങ്ങളുടെ പരീക്ഷണത്തിൽ, 2,000,000-വരികളുള്ള ഒരു ഇന്നർ ജോയിൻ ഡിഫോൾട്ടായി ഇൻപുട്ട് ഓർഡർ തെറ്റിച്ചും maintain_order സജ്ജീകരിച്ചപ്പോൾ ഓർഡർ നിലനിർത്തിയും വരികൾ തിരികെ നൽകി. ഈ റിലീസ് ഔട്ട്-ഓഫ്-കോർ സ്പില്ലിംഗും ഓണാക്കുന്നു, കൂടാതെ ബെഞ്ച്മാർക്ക് അവകാശവാദങ്ങൾ വെണ്ടർ സ്വന്തമാക്കുന്നു.
എഴുതിയ പതിപ്പ് വായിക്കുക (ഇംഗ്ലീഷ്) ↗
ഈ വീഡിയോയിൽ ഉൾപ്പെടുന്ന കാര്യങ്ങൾ
- ഒരു ലേസി ക്വറിയിൽ collect() വിളിക്കുന്നത് ഇപ്പോൾ ഡിഫോൾട്ടായി സ്ട്രീമിംഗ് എഞ്ചിൻ ഉപയോഗിക്കുന്നു, ഇത് ജോയിൻ, ഗ്രൂപ്പ്_ബൈ, അൺപിവോട്ട് എന്നിവയ്ക്ക് റോ ഓർഡർ ഉറപ്പുനൽകുന്നില്ല.
- മൈഗ്രേഷൻ ഗൈഡ് പറയുന്നത് ഓർഡർ ഇനി 2.0-ന് മുമ്പുള്ള ഓർഡർ അല്ലെന്നും അത് ഉറപ്പുനൽകുന്നില്ലെന്നും; നിങ്ങൾ അതിനെ ആശ്രയിക്കുന്നുവെങ്കിൽ ഒരു വ്യക്തമായ സോർട്ട് ശുപാർശ ചെയ്യുന്നു.
- ഞങ്ങളുടെ പരീക്ഷണത്തിൽ, ഒരു ഡിഫോൾട്ട് ഇന്നർ ജോയിൻ ഇൻപുട്ട് ഓർഡർ False എന്ന് തിരികെ നൽകി; ജോയിനിൽ maintain_order="left_right" True എന്ന് തിരികെ നൽകി. ഒരു മെഷീൻ, ഒരു റൺ, ഒരു ജോയിൻ ഷേപ്പ്.
- ഔട്ട്-ഓഫ്-കോർ സ്പില്ലിംഗ് ഡിഫോൾട്ടായി ഓണാണ്: ഇത് ഏകദേശം 80% RAM-ൽ ആരംഭിക്കുന്നു, 64 GB ഡിഫോൾട്ട് ഡിസ്ക് ബജറ്റോടെ. ഔട്ട്-ഓഫ്-കോർ ജോയിനും ഗ്രൂപ്പ്_ബൈയും റോഡ്മാപ്പിലുണ്ട്.
- collect_schema() ഏതെങ്കിലും ഡാറ്റ വായിക്കുന്നതിന് മുമ്പ് ഒരു കാണാതായ കോളം കണ്ടെത്തുന്നു, എന്നാൽ ഒരു മൂല്യത്തിൽ മാത്രം പരാജയപ്പെടുന്ന കാസ്റ്റ് collect()-ൽ മാത്രമേ പരാജയപ്പെടുകയുള്ളൂ.
- TPC-H, TPC-DS താരതമ്യം വെണ്ടറുടെ സ്വന്തം ഡെറിവേഡ് ഡാറ്റയിലെ റണ്ണാണ്, അതിന്റെ അടിക്കുറിപ്പ് പറയുന്നത് ഫലങ്ങൾ ഔദ്യോഗിക ബെഞ്ച്മാർക്കുകളുമായി താരതമ്യം ചെയ്യാൻ കഴിയില്ലെന്നാണ്.
വിവർത്തനം ചെയ്ത ട്രാൻസ്ക്രിപ്റ്റ്
യഥാർത്ഥ ഇംഗ്ലീഷ് ആഖ്യാനത്തിൽ നിന്ന് വിവർത്തനം ചെയ്തത്. ലഭ്യമായ ഓഡിയോയും അടിക്കുറിപ്പുകളും YouTube നിയന്ത്രിക്കുന്നു.
എന്തുകൊണ്ടാണ് ഡിഫോൾട്ട് ഓർഡർ മാറിയത്?
0:00 ഒരു ജോയിൻ നിങ്ങളുടെ വരികൾ നിങ്ങൾ എഴുതിയ ക്രമത്തിൽ തിരികെ നൽകുമെന്ന് നിങ്ങൾ കരുതുന്നു. പോളാർസ് 2.0 അത് മനഃപൂർവ്വം, ഡിഫോൾട്ടായി, വാഗ്ദാനം ചെയ്യുന്നത് നിർത്തി. ഈ വീഡിയോയിൽ: എന്തുകൊണ്ടാണ് ഡിഫോൾട്ട് മാറിയത്? അത് എന്ത് നേടി? നിങ്ങളുടെ ഏത് സ്ക്രിപ്റ്റാണ് ആദ്യം തകരുന്നത്? ഇത് The Daily Diff ആണ്, അണിയറയിൽ. പോളാർസ് ഒരു ഓപ്പൺ സോഴ്സ് ഡാറ്റാഫ്രെയിം ലൈബ്രറിയാണ്: പൈത്തണിൽ നിന്ന് നിങ്ങൾ വിളിക്കുന്ന ഒരു ടേബിൾ എഞ്ചിൻ,
0:20 അതിന്റെ കോർ റസ്റ്റിൽ എഴുതിയതാണ്. MIT ലൈസൻസിന് കീഴിൽ ഇത് സൗജന്യമാണ്, pip install polars ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് ഇൻസ്റ്റാൾ ചെയ്യാം. ആദ്യം ഒരു വിശദാംശം. പഴയ ഓർഡർ തിരികെ കൊണ്ടുവരുന്ന സ്വിച്ച് ജോയിനിലേക്കുള്ള ഒരു ആർഗ്യുമെന്റാണ്. അവസാനം ഞാൻ അതിലേക്ക് തിരികെ വരാം. 2.0 മുതൽ, കളക്ട് ഡിഫോൾട്ടായി സ്ട്രീമിംഗ് എഞ്ചിൻ പ്രവർത്തിപ്പിക്കുന്നു. സ്ട്രീമിംഗ് ക്വറിയെ സമാന്തരമായി പ്രവർത്തിക്കുന്ന ചങ്കുകളായി വിഭജിക്കുന്നു, ചങ്കുകൾ അവ പൂർത്തിയാകുമ്പോൾ അവസാനിക്കുന്നു.
0:42 ജോയിൻ, ഗ്രൂപ്പ് ബൈ, അൺപിവോട്ട് എന്നിവയ്ക്ക്, റിലീസ് ഒരു ഓർഡർ വാഗ്ദാനം ചെയ്യുന്നില്ല. ആർക്കാണ് ആദ്യം ആഘാതം ലഭിക്കുന്നത്? ഒരു സേവ് ചെയ്ത ഫയലുമായി ഔട്ട്പുട്ട് വരിവരിയായി താരതമ്യം ചെയ്യുന്നവർക്ക്. ആ ടെസ്റ്റ് നിങ്ങളുടെ ലാപ്ടോപ്പിൽ പാസ്സാകാം, മറ്റൊരു മെഷീനിൽ പരാജയപ്പെടാം. അടുത്തത്, മൈഗ്രേഷൻ ഗൈഡ്.
മൈഗ്രേഷൻ ഗൈഡ് എന്താണ് വാഗ്ദാനം ചെയ്യുന്നത്?
0:57 മുകളിൽ കാണിച്ചിരിക്കുന്ന കൃത്യമായ റോ ഓർഡർ ഉറപ്പുനൽകുന്നില്ലെന്ന് അത് പറയുന്നു. അതിനാൽ നിങ്ങൾ ഓർഡറിനെ ആശ്രയിക്കുന്നുവെങ്കിൽ, വ്യക്തമായി സോർട്ട് ചെയ്യുക. ഔട്ട്-ഓഫ്-കോറും ഡിഫോൾട്ടായി ഓണാണ്. ഇത് RAM-ന്റെ ഏകദേശം എൺപത് ശതമാനത്തിൽ ഡിസ്കിലേക്ക് സ്പിൽ ചെയ്യാൻ തുടങ്ങുന്നു, അറുപത്തിനാല് ജിഗാബൈറ്റ് ബജറ്റോടെ. സോർട്ട്, വിൻഡോ ഫംഗ്ഷനുകൾ, പല എക്സ്പ്രഷനുകളും ഇപ്പോൾ സ്പിൽ ചെയ്യാൻ കഴിയും. ജോയിനുകളും ഗ്രൂപ്പ്-ബൈകളും വരുന്നുണ്ട്.
ബെഞ്ച്മാർക്ക് ഒരു ന്യായമായ പോരാട്ടമാണോ?
1:17 TPC-H, TPC-DS ബെഞ്ച്മാർക്കുകളിൽ ഡാറ്റാഫ്യൂഷനെയും ഡക്ക്ഡിബിയെയും Polars തോൽപ്പിക്കുന്നുവെന്ന് Polars പറയുന്നു. നമ്പറുകൾ അവരുടെ സ്വന്തം റണ്ണുകളിൽ നിന്നാണ് വരുന്നത്, ഡെറിവേഡ് ഡാറ്റയിൽ, അവരുടെ അടിക്കുറിപ്പ് പറയുന്നത് അവ ഔദ്യോഗിക ഫലങ്ങളുമായി താരതമ്യം ചെയ്യാൻ കഴിയില്ലെന്നാണ്. TPC-H-ൽ പതിനാറ് കോറുകളിൽ നിന്ന് നൂറ്റിതൊണ്ണൂറ്റിരണ്ട് കോറുകളിലേക്ക് Polars ഏകദേശം മൂന്നേ പോയിന്റ് എട്ട് മടങ്ങ് വേഗത കൈവരിക്കുന്നുവെന്ന് അവരുടെ സ്വന്തം നമ്പറുകൾ പറയുന്നു. വലിയ മെഷീനിന്റെ അധിക ത്രെഡുകൾ ചെറിയ ക്വറികളുടെ വേഗത കുറയ്ക്കുന്നു എന്നും അവർ പറയുന്നു. Polars 2.0.0-ൽ ഞങ്ങൾ അതേ ജോയിൻ രണ്ടുതവണ പ്രവർത്തിപ്പിച്ചു.
ഞങ്ങൾ ഇത് പ്രവർത്തിപ്പിക്കുമ്പോൾ എന്താണ് കാണുന്നത്?
1:41 ഡിഫോൾട്ട് റൺ വരികളെ ഷഫിൾ ചെയ്യുന്നു. ഫ്ലാഗ് ഉപയോഗിച്ച്, ഇൻപുട്ട് ഓർഡർ നിലനിൽക്കുന്നു. ഒരു ടെസ്റ്റിന് ഭക്ഷണം നൽകുന്ന ജോയിനുകൾ കണ്ടെത്തുക. ഒരു സോർട്ട് ഇല്ലാത്ത ഏതൊരു ജോയിനും നിങ്ങൾ ഒരിക്കലും ചെയ്യാത്ത ഒരു റോ ഓർഡർ തീരുമാനമാണ്. Polars 2.0 ടൈപ്പുകളിൽ കൂടുതൽ കർശനമാണ്. ഏതെങ്കിലും ഡാറ്റ വായിക്കുന്നതിന് മുമ്പ് സ്കീമ ചെക്ക് ഒരു കാണാതായ കോളം കണ്ടെത്തുന്നു.
കൂടുതൽ കർശനമാക്കുന്നത് നേരത്തെയാണോ?
1:58 ഒരു വരിയിൽ പരാജയപ്പെടുന്ന ഒരു കാസ്റ്റ് അതിന് പിടിക്കാൻ കഴിയില്ല, കാരണം ആ പിശക് ഡാറ്റയ്ക്ക് വേണ്ടി കാത്തിരിക്കുന്നു. ഇപ്പോൾ ഞാൻ തുറന്ന ലൂപ്പ്. സ്വിച്ച് ജോയിനിൽ ജീവിക്കുന്നു.
എനിക്ക് പഴയ ഓർഡർ എങ്ങനെ തിരികെ ലഭിക്കും?
2:08 ജോയിനിൽ maintain order സജ്ജീകരിക്കുക, അല്ലെങ്കിൽ അതിന് ശേഷം ഒരു സോർട്ട് ചേർക്കുക. ഗൈഡ് സോർട്ട് നിർദ്ദേശിക്കുന്നു. ഞങ്ങളുടെ റണ്ണിൽ ജോയിൻ ഫ്ലാഗ് ഓർഡർ നിലനിർത്തി, ഇടതുവശത്തെ ഓർഡർ left, right ആയി നിലനിർത്തി. വിധി, അണിയറയിൽ: NEEDS REVIEW. അപ്ഗ്രേഡ് ചെയ്യുന്നതിന് മുമ്പ് ഞാൻ എല്ലാ ജോയിനുകളും അവലോകനം ചെയ്യും.
വിധി എന്താണ്?
2:22 ഇതിനെക്കുറിച്ച് ഒരു ചോദ്യമുണ്ടോ? അത് കമന്റുകളിൽ ഇടുക. അതാണ് ഇന്നത്തെ diff. ഞാൻ 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



