7

स्पार्क के साथ अच्छा प्रदर्शन करने के लिए। मैं सोच रहा हूं कि एसक्यूएल कोंटेक्स्ट के माध्यम से एसक्यूएल प्रश्नों का उपयोग करना अच्छा है या यदि डेटाफ्रेम कार्यों जैसे df.select() के माध्यम से प्रश्न करना बेहतर है।एसक्यूएल प्रश्नों बनाम dataframe कार्यों स्पार्क

कोई विचार? :)

उत्तर

12

कोई प्रदर्शन अंतर नहीं है। दोनों विधियां बिल्कुल उसी निष्पादन इंजन और आंतरिक डेटा संरचनाओं का उपयोग करती हैं। दिन के अंत में सभी व्यक्तिगत वरीयताओं को उबालते हैं।

  • यकीनन DataFrame प्रश्नों को प्रोग्राम के निर्माण और एक न्यूनतम प्रकार सुरक्षा प्रदान करने के लिए बहुत आसान कर रहे हैं।

  • सादा एसक्यूएल प्रश्नों में काफी अधिक संक्षिप्त समझने के लिए एक आसान हो सकता है। पोर्टेबल भी हैं और प्रत्येक समर्थित भाषा के साथ किसी भी संशोधन के बिना इस्तेमाल किया जा सकता है। HiveContext के साथ इनका उपयोग कुछ कार्यक्षमताओं को बेनकाब करने के लिए भी किया जा सकता है जो अन्य तरीकों से पहुंच योग्य नहीं हो सकते हैं (उदाहरण के लिए स्पार्क रैपर के बिना यूडीएफ)।

+0

अच्छा। आपके उत्तर के लिए बहूत बहूत धन्यवाद ! –

+0

नमस्ते मैं जानना चाहता हूं कि कौन सा उपयोग करना बेहतर है। sqlContext या df.select ?? – praveen

2

आदर्श रूप से, स्पार्क के उत्प्रेरक को दोनों निष्पादन योजना में कॉल को अनुकूलित करना चाहिए और प्रदर्शन समान होना चाहिए। कॉल कैसे करें आपकी शैली का मामला है। हकीकत में, हॉर्टनवर्क्स (https://community.hortonworks.com/articles/42027/rdd-vs-dataframe-vs-sparksql.html) द्वारा रिपोर्ट के अनुसार एक अंतर है, जहां एसक्यूएल किसी ऐसे मामले के लिए डेटाफ्रेम को बेहतर बनाता है जब आपको अपने कुल COUNTS के साथ ग्रुप किए गए रिकॉर्ड की आवश्यकता होती है जो रिकॉर्ड नाम से सॉर्ट डिस्प्लेन्डर होते हैं।

1

डेटाफ्रेम का उपयोग करके, कोई एसक्यूएल को कई कथन/प्रश्नों में तोड़ सकता है, जो डिबगिंग, आसान संवर्धन और कोड रखरखाव में मदद करता है।

सरल प्रश्नों में जटिल एसक्यूएल प्रश्नों को तोड़ने और परिणाम बताए करने के लिए एक DF बेहतर समझ लाता है।

एकाधिक डीएफ में क्वेरी को विभाजित करके, डेवलपर को कैश, पुनरावृत्ति (अनन्य/नज़दीक अद्वितीय कुंजी का उपयोग करके विभाजन में समान रूप से डेटा वितरित करने का लाभ प्राप्त करने का लाभ प्राप्त होता है)।

संबंधित मुद्दे