पोलर्स 2.0: जॉइन्स त्यांची पंक्ती क्रमवारी का राखत नाहीत
पोलर्स 2.0 डीफॉल्टनुसार स्ट्रीमिंग इंजिनवर कलेक्ट चालवते.
पोलर्स 2.0 डीफॉल्टनुसार स्ट्रीमिंग इंजिनवर कलेक्ट चालवते. जॉइन, ग्रुप_बाय आणि अनपिव्हटसाठी, हे रिलीज इनपुट पंक्ती क्रमवारीची हमी देत नाही, जोपर्यंत तुम्ही maintain_order सेट करत नाही किंवा स्पष्टपणे सॉर्ट करत नाही. पोलर्स 2.0.0 वर आमच्या चाचणीत, 2,000,000-पंक्तीच्या इनर जॉइनने डीफॉल्टनुसार पंक्तींना इनपुट क्रमाच्या बाहेर परत केले आणि maintain_order सेट केल्यावर क्रमवारी राखली. या रिलीजमध्ये आउट-ऑफ-कोर स्पिलिंग देखील चालू केले आहे आणि बेंचमार्क दावे विक्रेत्याचे स्वतःचे बनवले आहेत.
लिखित आवृत्ती वाचा (इंग्रजी) ↗
या व्हिडिओमध्ये काय समाविष्ट आहे
- लेझी क्वेरीवर collect() कॉल केल्याने आता डीफॉल्टनुसार स्ट्रीमिंग इंजिन वापरले जाते, जे जॉइन, ग्रुप_बाय आणि अनपिव्हटसाठी पंक्ती क्रमवारीची हमी देत नाही.
- स्थलांतर मार्गदर्शक म्हणते की क्रमवारी यापुढे 2.0 पूर्वीची क्रमवारी नाही आणि त्याची हमी दिली जात नाही; जर तुम्ही त्यावर अवलंबून असाल तर ते स्पष्ट सॉर्टची शिफारस करते.
- आमच्या चाचणीत, डीफॉल्ट इनर जॉइनने इनपुट ऑर्डर फॉल्स परत केले; जॉइनवर maintain_order="left_right" सेट केल्याने ट्रू परत आले. एक मशीन, एक चाचणी, एक जॉइन आकार.
- आउट-ऑफ-कोर स्पिलिंग डीफॉल्टनुसार चालू आहे: ते सुमारे 80% RAM पासून सुरू होते, 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 ते म्हणते की वर दर्शविलेल्या अचूक पंक्ती क्रमवारीची हमी दिली जात नाही. म्हणून जर तुम्ही क्रमवारीवर अवलंबून असाल, तर स्पष्टपणे सॉर्ट करा. आउट-ऑफ-कोर देखील डीफॉल्टनुसार चालू आहे. ते सुमारे ऐंशी टक्के रॅमवर डिस्कवर स्पिलिंग सुरू करते, चौसष्ट गिगाबाइट बजेटसह. सॉर्ट, विंडो फंक्शन्स आणि अनेक एक्सप्रेेशन्स आता स्पिल होऊ शकतात. जॉइन्स आणि ग्रुप-बायज येत आहेत.
बेंचमार्क एक योग्य लढाई आहे का?
1:17 पोलर्स म्हणते की ते TPC-H आणि TPC-DS बेंचमार्कवर डेटाफ्यूजन आणि डकडीबीला हरवते. संख्या त्यांच्या स्वतःच्या चाचण्यांमधून, व्युत्पन्न डेटावर येतात, आणि त्यांच्या तळटीपमध्ये असे म्हटले आहे की ते अधिकृत परिणामांशी तुलना करता येत नाहीत. त्यांच्या स्वतःच्या संख्यांनुसार पोलर्स TPC-H वर सोळा कोअरपासून एकशे ब्याण्णवपर्यंत सुमारे तीन पॉइंट आठ पट वेगाने मिळते. त्यांनी असेही म्हटले आहे की मोठ्या मशीनचे अतिरिक्त थ्रेड्स लहान क्वेरींना धीमे करतात. आम्ही Polars 2.0.0 वर तीच जॉइन दोनदा चालवली.
जेव्हा आपण ते चालवतो तेव्हा आपल्याला काय दिसते?
1:41 डीफॉल्ट रन पंक्तींना शफल करते. फ्लॅगसह, इनपुट क्रमवारी टिकते. एका चाचणीला फीड करणाऱ्या जॉइन्स शोधा. त्यानंतर सॉर्ट नसलेले कोणतेही जॉइन हा एक पंक्ती क्रमवारीचा निर्णय आहे जो तुम्ही कधीही घेतला नाही. पोलर्स 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



