पोलार्स 2.0: किन जोडहरूले अब तिनीहरूको पङ्क्ति क्रम कायम राख्दैनन्
पोलार्स 2.0 ले स्ट्रिमिङ इन्जिनमा पूर्वनिर्धारित रूपमा सङ्कलन गर्दछ।
पोलार्स 2.0 ले स्ट्रिमिङ इन्जिनमा पूर्वनिर्धारित रूपमा सङ्कलन गर्दछ। जोड, समूह-द्वारा र अनपिवटको लागि, रिलीजले अब इनपुट पङ्क्ति क्रमको ग्यारेन्टी दिँदैन जबसम्म तपाईं स्पष्ट रूपमा maintain_order वा sort सेट गर्नुहुन्न। पोलार्स 2.0.0 मा हाम्रो दौडमा, 2,000,000-पङ्क्तिको भित्री जोडले पूर्वनिर्धारित रूपमा इनपुट क्रम बाहिर पङ्क्तिहरू फर्कायो र maintain_order सेट गर्दा क्रम कायम राख्यो। यस रिलीजले आउट-अफ-कोर स्पिलिङ पनि सक्रिय गर्दछ र बेन्चमार्क दावीहरू विक्रेताको आफ्नै बनाउँदछ।
लिखित संस्करण पढ्नुहोस् (अंग्रेजी) ↗
यो भिडियोले के समेट्छ
- लेजी क्वेरीमा collect() कल गर्दा अब पूर्वनिर्धारित रूपमा स्ट्रिमिङ इन्जिन प्रयोग गर्दछ, जसले जोड, group_by र unpivot को लागि पङ्क्ति क्रमको ग्यारेन्टी दिँदैन।
- माइग्रेसन गाइडले भन्छ कि क्रम अब पूर्व-2.0 क्रम होइन र ग्यारेन्टी छैन; यदि तपाईं यसमा निर्भर हुनुहुन्छ भने यसले स्पष्ट क्रमबद्ध गर्न सिफारिस गर्दछ।
- हाम्रो दौडमा, पूर्वनिर्धारित भित्री जोडले इनपुट अर्डर गलत फर्कायो; maintain_order="left_right" जोडमा सेट गर्दा सही फर्कायो। एउटा मेसिन, एउटा दौड, एउटा जोडको आकार।
- आउट-अफ-कोर स्पिलिङ पूर्वनिर्धारित रूपमा सक्रिय छ: यो RAM को लगभग 80% बाट सुरु हुन्छ, 64 GB पूर्वनिर्धारित डिस्क बजेटको साथ। आउट-अफ-कोर जोड र group_by रोडम्यापमा छन्।
- collect_schema() ले कुनै पनि डेटा पढ्नु अघि छुटेको स्तम्भ समात्छ, तर एउटा मानमा मात्र असफल हुने कास्ट collect() मा मात्र असफल हुन्छ।
- TPC-H र TPC-DS तुलना विक्रेताको आफ्नै व्युत्पन्न डेटामा गरिएको दौड हो, र यसको फुटनोटले परिणामहरू आधिकारिक बेन्चमार्कहरूसँग तुलना गर्न योग्य छैन भनी बताउँछ।
अनुवादित ट्रान्सक्रिप्ट
मूल अंग्रेजी कथाबाट अनुवादित। उपलब्ध अडियो र क्याप्सनहरू YouTube द्वारा नियन्त्रित हुन्छन्।
पूर्वनिर्धारित क्रम किन परिवर्तन भयो?
0:00 तपाईंलाई लाग्छ कि जोडले तपाईंको पङ्क्तिहरूलाई तपाईंले लेखेको क्रममा फिर्ता दिन्छ। पोलार्स 2.0 ले पूर्वनिर्धारित रूपमा, जानाजानी त्यो प्रतिज्ञा गर्न छोड्यो। यस भिडियोमा: पूर्वनिर्धारित किन परिवर्तन भयो? यसले के प्राप्त गर्यो? र तपाईंको कुन स्क्रिप्ट पहिले बिग्रन्छ? यो The Daily Diff हो, भित्रबाट। पोलार्स एउटा खुला स्रोत डाटाफ्रेम लाइब्रेरी हो: एउटा तालिका इन्जिन जसलाई तपाईं पाइथनबाट कल गर्नुहुन्छ,
0:20 यसको कोर रस्टमा लेखिएको छ। यो MIT लाइसेन्स अन्तर्गत निःशुल्क छ, र तपाईंले यसलाई pip install polars मार्फत स्थापना गर्नुहुन्छ। पहिले एउटा विवरण। पुरानो क्रम फिर्ता ल्याउने स्विच जोड आफैमा एउटा तर्क हो। म यसमा अन्त्यमा फर्कनेछु। 2.0 देखि, collect ले पूर्वनिर्धारित रूपमा स्ट्रिमिङ इन्जिन चलाउँछ। स्ट्रिमिङले क्वेरीलाई समानान्तरमा चल्ने खण्डहरूमा विभाजन गर्दछ, र खण्डहरू समाप्त भएपछि समाप्त हुन्छन्।
0:42 जोड, समूह-द्वारा र अनपिवटको लागि, रिलीजले क्रमको वाचा गर्दैन। कसलाई पहिले चोट पुग्छ? जोसुकैले आउटपुटलाई सुरक्षित गरिएको फाइलसँग, पङ्क्ति अनुसार तुलना गर्छ। त्यो परीक्षण तपाईंको ल्यापटपमा पास हुन सक्छ र फरक मेसिनमा असफल हुन सक्छ। अर्को, माइग्रेसन गाइड।
माइग्रेसन गाइडले के वाचा गर्दछ?
0:57 यसले भन्छ कि माथि देखाइएको सही पङ्क्ति क्रम ग्यारेन्टी छैन। त्यसैले यदि तपाईं क्रममा निर्भर हुनुहुन्छ भने, स्पष्ट रूपमा क्रमबद्ध गर्नुहोस्। आउट-अफ-कोर पनि पूर्वनिर्धारित रूपमा सक्रिय छ। यो RAM को लगभग असी प्रतिशतमा डिस्कमा स्पिल गर्न सुरु गर्छ, चौसठ्ठी गिगाबाइट बजेटको साथ। Sort, window functions र धेरै अभिव्यक्तिहरूले अब स्पिल गर्न सक्छन्। Joins र group-bys आउँदैछन्।
के बेन्चमार्क निष्पक्ष लडाई हो?
1:17 पोलार्स भन्छ कि यसले TPC-H र TPC-DS बेन्चमार्कहरूमा DataFusion र DuckDB लाई हराउँछ। नम्बरहरू तिनीहरूको आफ्नै दौडबाट आएका हुन्, व्युत्पन्न डेटामा, र तिनीहरूको फुटनोटले तिनीहरू आधिकारिक परिणामहरूसँग तुलना गर्न योग्य छैन भनी बताउँछ। तिनीहरूको आफ्नै नम्बरहरू भन्छन् कि पोलार्स TPC-H मा सोह्र कोरबाट एक सय बयानब्बेमा करिब तीन दशमलव आठ गुणा छिटो हुन्छ। तिनीहरू यो पनि भन्छन् कि ठूलो मेसिनका अतिरिक्त थ्रेडहरूले साना क्वेरीहरूलाई ढिलो गर्छन्। हामीले पोलार्स 2.0.0 मा उही जोड दुई पटक चलायौं।
हामीले यसलाई चलाउँदा के देख्छौं?
1:41 पूर्वनिर्धारित रनले पङ्क्तिहरूलाई शफल गर्छ। झण्डाको साथ, इनपुट क्रम जीवित रहन्छ। एउटा परीक्षणलाई फिड गर्ने जोडहरू फेला पार्नुहोस्। त्यसपछि क्रमबद्ध नभएको कुनै पनि जोड तपाईंले कहिल्यै नगरेको पङ्क्ति क्रम निर्णय हो। पोलार्स 2.0 प्रकारहरूको बारेमा कडा छ। स्कीमा जाँचले कुनै पनि डेटा पढ्नु अघि छुटेको स्तम्भ समात्छ।
के कडा हुनुको अर्थ चाँडो हो?
1:58 यसले एउटा पङ्क्तिमा असफल हुने कास्टलाई समात्न सक्दैन, किनभने त्यो त्रुटि डेटाको लागि पर्खन्छ। अब मैले खोलेको लूप। स्विच जोडमा बस्छ। जोडमा maintain order सेट गर्नुहोस्, वा त्यसपछि क्रमबद्ध थप्नुहोस्।
मैले पुरानो क्रम कसरी फिर्ता पाउँछु?
2:08 गाइडले क्रमबद्ध गर्न सुझाव दिन्छ। जोड झण्डाले हाम्रो दौडमा क्रम कायम राख्यो, बायाँ पक्षको क्रम बायाँ, दायाँको रूपमा राखिएको थियो। फैसला, भित्रबाट: NEEDS REVIEW। मैले अपग्रेड गर्नु अघि प्रत्येक जोडको समीक्षा गर्नेछु। यस बारेमा प्रश्न छ? यसलाई टिप्पणीमा राख्नुहोस्।
फैसला के हो?
2:22 र त्यो आजको लागि फरक छ। म Axrisi बाट Niko हुँ। जिम्मेवारीपूर्वक मर्ज गर्नुहोस्। यस बारेमा प्रश्न छ? यसलाई टिप्पणीमा राख्नुहोस्। र त्यो आजको लागि फरक छ।
स्रोतहरू
- 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



