स्पार्क में विभाजन का प्रदर्शन

यह ब्लॉग बताता है कि आपको स्पार्क में विभाजन, विभाजन के प्रकारों और कुंजी आधारित परिवर्तनों के लिए निष्पादन की गति में सुधार के बारे में जानने की आवश्यकता है।

पृथ्वीराज बोस द्वारा योगदान दिया गया

स्पार्क का लचीला वितरित डेटासेट (प्रोग्रामिंग एब्स्ट्रैक्शन) का मूल्यांकन आलसी तरीके से किया जाता है और रूपांतरणों को निर्देशित चक्रीय ग्राफ (DAG) के रूप में संग्रहीत किया जाता है। आरडीडी पर हर कार्रवाई स्पार्क को डीएजी को फिर से स्थापित करेगी। स्पार्क में इस तरह से शालीनता प्राप्त होती है क्योंकि यदि कोई भी श्रमिक नोड विफल हो जाता है तो डीएजी को केवल पुन: विवादित होना चाहिए।



ये भी कैश करने के लिए अनिवार्य है (उचित भंडारण स्तर के साथ बने रहें) RDD जैसे कि RDD पर बार-बार की जाने वाली कार्रवाइयां स्पार्क को DAG को पुनः प्राप्त करने के लिए बाध्य नहीं करती हैं।इस ब्लॉग में शामिल विषय अनिवार्य रूप से अपाचे स्पार्क और स्काला प्रमाणन के लिए आवश्यक हैं। इस ब्लॉग में शामिल विषयों के लिए अनिवार्य रूप से आवश्यक हैं

एक विभाजनक का उपयोग क्यों करें?

क्लस्टर कंप्यूटिंग में, नेटवर्क यातायात को कम करने के लिए केंद्रीय चुनौती है। जब डेटा कुंजी-मूल्य उन्मुख होता है, तो विभाजन अनिवार्य हो जाता है क्योंकि RDD पर बाद के परिवर्तनों के लिए, पूरे नेटवर्क में डेटा का उचित फेरबदल होता है। यदि समान विभाजन या कुंजियों की श्रेणी एक ही विभाजन में संग्रहीत की जाती है तो फेरबदल कम से कम किया जाता है और प्रसंस्करण काफी तेज हो जाता है।

ऐसे ट्रांसफ़ॉर्मेशन जिनके लिए वर्कर नोड्स में डेटा की फेरबदल की आवश्यकता होती है, विभाजन से बहुत लाभ होता है। ऐसे परिवर्तन हैं cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey, कम करेंबाय, कम्बाइकबे तथा खोजें

विभाजन विन्यास योग्य हैं बशर्ते RDD कुंजी-आधारित हो।

विभाजन के गुण

  1. एक ही मशीन में एक ही मशीन में होने की गारंटी दी जाती है।
  2. एक क्लस्टर में प्रत्येक नोड में एक से अधिक विभाजन हो सकते हैं।
  3. विभाजन की कुल संख्या विन्यास योग्य है, डिफ़ॉल्ट रूप से यह सभी निष्पादक नोड्स पर कोर की कुल संख्या पर सेट है।

स्पार्क में विभाजन के प्रकार

स्पार्क विभाजन के दो प्रकारों का समर्थन करता है,

  • हैश विभाजन : जावा का उपयोग करता है ऑब्जेक्ट.शशकोड विधि के रूप में विभाजन को निर्धारित करने के लिए विभाजन = key.hashCode ()% अंक।

hash-partitioning-demystifying-partitioning-in-spark

  • श्रेणी विभाजन : संबंधित विभाजनों को वितरित करने के लिए एक सीमा का उपयोग करता है जो एक सीमा के भीतर आते हैं। यह विधि उपयुक्त है जहाँ कुंजियों और कुंजियों में स्वाभाविक क्रमबद्धता नॉन नेगेटिव है। नीचे दिए गए कोड स्निपेट में श्रेणी विभाजन का उपयोग दिखाया गया है।

कैसे जावा में कार्यक्रम से बाहर निकलने के लिए - -

कोड उदाहरण

आइए एक उदाहरण देखें कि कार्यकर्ता नोड्स में डेटा का विभाजन कैसे करें। पूर्ण स्काला कोड उपलब्ध है यहाँ

यहां 12 निर्देशांक (ट्यूपल्स के रूप में) के कुछ परीक्षण डेटा दिए गए हैं;

बनाओ org.apache.spark.ashPartitioner आकार 2 का, जहाँ कुंजियों को विभाजन के हैश कोड के आधार पर इन दो विभाजनों में विभाजित किया जाएगा।

जावा का एक रिश्ता है

फिर हम जोड़े का निरीक्षण कर सकते हैं और विभिन्न प्रमुख आधारित परिवर्तन कर सकते हैं foldByKey तथा कम करें।

संक्षेप में, विभाजन आधारित कुंजी परिवर्तनों के लिए निष्पादन की गति में बहुत सुधार करता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।

संबंधित पोस्ट:

हेदोप के बाद आपको स्पार्क क्यों सीखना चाहिए

अपाचे स्पार्क बनाम हडोप मैपराइड