असली पहला सवाल यह है कि लोग शुद्ध SQL अमूर्त की तुलना में DataFrame सार के साथ अधिक उत्पादक क्यों हैं।
TLDR; SQL (मानव) विकास और डीबगिंग प्रक्रिया के आसपास तैयार नहीं है, DataFrames हैं।
मुख्य कारण यह है कि DataFrame अमूर्त आप क्रिया और अवैध घोंसले के शिकार से बचने के लिए SQL बयानों का निर्माण करने की अनुमति देते हैं। नेस्टेड रूटीन लिखने का पैटर्न, उन्हें जाँचने के लिए टिप्पणी करना, और फिर उन्हें अनइंस्टाल करना, परिवर्तन की एकल लाइनों द्वारा प्रतिस्थापित किया जाता है। आप स्वाभाविक रूप से चीजों को एक उत्तर में (स्पार्क में भी) लाइन से चला सकते हैं और परिणाम देख सकते हैं।
एक तालिका में एक नया रूपांतरित (स्ट्रिंग मैंग्ड कॉलम) जोड़ने के उदाहरण पर विचार करें, फिर इसके द्वारा समूहीकृत करना और कुछ एकत्रीकरण करना। SQL बहुत बदसूरत हो जाता है। पंडों इसे हल कर सकते हैं लेकिन कुछ चीजें याद कर रहे हैं जब यह वास्तव में बड़े डेटा या विशेष विभाजन (शायद हाल ही में बेहतर) में आता है।
DataFrames को SQL रूटीन के लिए एक उच्च-स्तरीय API के रूप में देखा जाना चाहिए, भले ही पांडा के साथ वे कुछ SQL प्लानर को प्रदान नहीं किए गए हों।
-
आप शायद इसके आस-पास कई तकनीकी चर्चा कर सकते हैं, लेकिन मैं नीचे उपयोगकर्ता के दृष्टिकोण पर विचार कर रहा हूं।
एक साधारण कारण है कि आप पंडों के डेटा हेरफेर के आसपास बहुत अधिक प्रश्न देख सकते हैं क्योंकि एसक्यूएल का विरोध एसक्यूएल का उपयोग करने के लिए है, परिभाषा के अनुसार, डेटाबेस का उपयोग करने का मतलब है, और इन दिनों बहुत सारे उपयोग के मामलों के लिए केवल डेटा के बिट्स की आवश्यकता होती है ' एक-से-एक 'कार्य (.csv, वेब एपीआई, आदि से)। इन मामलों में, डेटाबेस से लोड करना, भंडारण, हेरफेर करना और निकालना व्यवहार्य नहीं है।
हालाँकि, ऐसे मामलों पर विचार करना, जहाँ उपयोग-मामला पंडों या एसक्यूएल के उपयोग को सही ठहरा सकता है, आप निश्चित रूप से गलत नहीं हैं। यदि आप कई दोहरावदार डेटा हेरफेर कार्यों को करना चाहते हैं और आउटपुट को जारी रखते हैं, तो मैं हमेशा एसक्यूएल के माध्यम से जाने की कोशिश करूंगा। जिस कारण से मैंने देखा है कि कई उपयोगकर्ता, इन मामलों में भी, SQL के माध्यम से दो-गुना नहीं होते हैं।
सबसे पहले, एसक्यूएल के ऊपर प्रमुख लाभ पांडा यह है कि यह व्यापक पायथन ब्रह्मांड का हिस्सा है, जिसका अर्थ है कि मैं गिर गया, मैं अपने डेटा को लोड, साफ, हेरफेर कर सकता हूं और कल्पना कर सकता हूं (मैं पंडों के माध्यम से एसक्यूएल को निष्पादित भी कर सकता हूं ...)। दूसरा, काफी सरल है, कि सभी बहुत से उपयोगकर्ता SQL की क्षमताओं की सीमा तक नहीं जानते हैं। आपके डेटा को DB से अगली जगह पर लाने के साधन के रूप में SQL (SELECT, FROM, WHERE, इत्यादि) के 'निष्कर्षण वाक्यविन्यास' को हर शुरुआती सीखता है। कुछ अधिक अग्रिम समूहन और पुनरावृत्ति सिंटैक्स उठा सकते हैं। लेकिन उसके बाद ज्ञान में एक बहुत ही महत्वपूर्ण अंतर हो जाता है, जब तक कि आप विशेषज्ञों (डीबीए, डेटा इंजीनियर, आदि) से नहीं मिलते।
tl; dr: यह अक्सर उपयोग-केस, सुविधा या SQL की क्षमताओं की सीमा के आस-पास ज्ञान के अंतराल के लिए नीचे होता है।