पृथ्वीराज बोस द्वारा योगदान दिया गया
यहां उस सामान पर एक ब्लॉग है जिसे आपको स्पार्क संचयकों के बारे में जानना होगा।साथ में एक प्रमुख कौशल है कि ज्यादातर आईटी रिक्रूटर्स इसका शिकार होते हैं, उद्योग में इसकी वृद्धि और मांग इसकी स्थापना के बाद से घातीय रही है।
संचायक क्या हैं?
Accumulators चर हैं जो निष्पादनकर्ताओं के बीच जानकारी एकत्र करने के लिए उपयोग किए जाते हैं। उदाहरण के लिए, यह जानकारी डेटा या एपीआई निदान से संबंधित हो सकती है जैसे कि कितने रिकॉर्ड दूषित हैं या किसी विशेष लाइब्रेरी API को कितनी बार कॉल किया गया था।
यह समझने के लिए कि हमें संचायक की आवश्यकता क्यों है, आइए एक छोटा सा उदाहरण देखें।
मध्य कोलकाता क्षेत्र के आसपास दुकानों की श्रृंखला के लेनदेन का एक काल्पनिक लॉग है।
4 क्षेत्र हैं,
फ़ील्ड 1 -> शहर
फ़ील्ड 2 -> स्थानीयता
फ़ील्ड 3 -> बेची गई वस्तु की श्रेणी
फ़ील्ड 4 -> बेची गई वस्तु का मूल्य
हालाँकि, लॉग दूषित हो सकते हैं। उदाहरण के लिए, दूसरी पंक्ति एक रिक्त रेखा है, चौथी पंक्ति कुछ नेटवर्क समस्याओं की रिपोर्ट करती है और अंत में अंतिम पंक्ति शून्य का बिक्री मूल्य दिखाती है (जो ऐसा नहीं हो सकता!)।
हम संचयकर्ताओं का उपयोग कर सकते हैं कि वे खाली लॉग्स (रिक्त रेखाएं) की संख्या का पता लगाने के लिए लेन-देन लॉग का विश्लेषण करें, नेटवर्क विफल होने की संख्या, कोई भी उत्पाद जिसमें श्रेणी नहीं है या यहां तक कि शून्य बिक्री दर्ज की गई है। पूर्ण नमूना लॉग पाया जा सकता है यहाँ ।
Accumulators किसी भी ऑपरेशन के लिए लागू होते हैं जो हैं,
1. कम्यूटेटिव -> f (x, y) = f (y, x) , तथा
2. साहचर्य -> f (f (x, y), z) = f (f (x, z), y) = f (f (y, z), x)
उदाहरण के लिए, योग तथा अधिकतम कार्य उपरोक्त शर्तों को पूरा करते हैं जबकि औसत नहीं करता।
स्पार्क Accumulators का उपयोग क्यों करें?
अब हमें संचायक की आवश्यकता क्यों है और नीचे दिए गए कोड में दिखाए गए चर का उपयोग क्यों नहीं करना चाहिए।
उपरोक्त कोड के साथ समस्या यह है कि जब चालक चर को प्रिंट करता है कंबल इसका मूल्य शून्य होगा। इसका कारण यह है कि जब स्पार्क जहाज के प्रत्येक निष्पादक को यह कोड देता है तो चर उस निष्पादक के लिए स्थानीय हो जाते हैं और इसका अद्यतन मान चालक को वापस नहीं भेजा जाता है। इस समस्या से बचने के लिए हमें बनाने की जरूरत है कंबल एक संचायक ऐसा है कि हर निष्पादक में इस चर के सभी अपडेट ड्राइवर को वापस भेज दिए जाते हैं। तो उपरोक्त कोड के रूप में लिखा जाना चाहिए,यह गारंटी देता है कि संचायक कंबल हर निष्पादक में अपडेट किया जाता है और अपडेट ड्राइवर को वापस भेज दिया जाता है।
हम नेटवर्क त्रुटियों या शून्य बिक्री मूल्य, आदि के लिए अन्य काउंटरों को लागू कर सकते हैं। अन्य काउंटरों के कार्यान्वयन के साथ पूर्ण स्रोत कोड पाया जा सकता है यहाँ ।
Hadoop Map-Reduce से परिचित लोग ध्यान देंगे कि Spark के संचायक Hadoop के Map-Reduce काउंटर के समान हैं।
कैवियट
संचायक का उपयोग करते समय कुछ कैविएट होते हैं जिन्हें हम प्रोग्रामर के रूप में जानते हैं,
- अंदर संगणना परिवर्तन आलसी का मूल्यांकन किया जाता है, इसलिए जब तक कि ए कार्रवाई RDD पर होता है परिवर्तन निष्पादित नहीं कर रहे हैं। इस के परिणामस्वरूप, संचयक जैसे कार्यों के अंदर उपयोग किया जाता है नक्शा() या फ़िल्टर () जब तक कुछ निष्पादित नहीं किया जाएगा कार्रवाई RDD पर होता है।
- स्पार्क संचायक अद्यतन करने की गारंटी देता है के भीतर क्रिया केवल एकबार । इसलिए भले ही किसी कार्य को फिर से शुरू किया जाए और वंश को फिर से शुरू किया जाए, संचायक केवल एक बार अपडेट किए जाएंगे।
- स्पार्क इसके लिए गारंटी नहीं देता है परिवर्तन । इसलिए यदि किसी कार्य को फिर से शुरू किया जाता है और वंश को पुन: प्रतिष्ठित किया जाता है, तो अवांछनीय दुष्प्रभावों की संभावना होती है जब संचायक एक से अधिक बार अपडेट किए जाएंगे।
सुरक्षित पक्ष पर होने के लिए, हमेशा केवल क्रियाओं के अंदर संचायक का उपयोग करें।
कोड यहाँ इसे प्राप्त करने के तरीके पर एक सरल अभी तक प्रभावी उदाहरण दिखाता है।
संचायक पर अधिक जानकारी के लिए, पढ़ें यह ।
क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? उन्हें टिप्पणी अनुभाग में उल्लेख करें और हम आपके पास वापस आ जाएंगे।
अजगर के लिए एनाकोंडा का उपयोग कैसे करें
संबंधित पोस्ट: