स्पार्क में वैश्विक पढ़ने \ लिखने के चर को परिभाषित करने के लिए कैसे करें broadcast
चर, जो केवल पढ़ने के लिए हैं, और accumulator
चर, जो नोड्स द्वारा अपडेट किए जा सकते हैं, लेकिन पढ़ नहीं सकते हैं। क्या कोई तरीका है - या एक वर्कअराउंड - एक वैरिएबल को परिभाषित करने के लिए जो दोनों अद्यतन करने योग्य है और पढ़ा जा सकता है? इस तरह के एक पढ़ने के लिएस्पार्क
एक आवश्यकता \ बारे में वैश्विक चर एक कैश लागू करने के लिए किया जाएगा। चूंकि फ़ाइलों को लोड किया जाता है और आरडीडी के रूप में संसाधित किया जाता है, गणना की जाती है। इन गणनाओं के नतीजे - समानांतर में चल रहे कई नोड्स में हो रहा है - एक मानचित्र में रखा जाना चाहिए, जिसकी वजह से यह संसाधित होने वाली इकाई के कुछ गुणों की कुंजी है। चूंकि आरडीडी के भीतर की इकाइयों को संसाधित किया जाता है, तो कैश पूछताछ की जाती है।
स्कैला में ScalaCache
है, जो Google Guava
जैसे कैश कार्यान्वयन के लिए एक मुखौटा है। लेकिन स्पार्क एप्लिकेशन के भीतर इस तरह के कैश को कैसे शामिल किया जाएगा और एक्सेस किया जाएगा?
कैश जो SparkContext
बनाता ड्राइवर आवेदन में एक चर के रूप में परिभाषित किया जा सकता है। लेकिन फिर वहाँ दो मुद्दों होगा:
- प्रदर्शन शायद नेटवर्क ओवरहेड नोड्स और चालक अनुप्रयोग के बीच की वजह से खराब हो जाएगा।
- मेरी समझ के लिए, प्रत्येक rdd को (इस मामले में कैश) की एक प्रति पारित की जाएगी जब चर को पहली बार फ़ंक्शन को पार किया गया हो। प्रत्येक rdd की अपनी प्रतिलिपि होगी, साझा किए गए वैश्विक चर तक पहुंच नहीं।
ऐसे कैश को लागू करने और स्टोर करने का सबसे अच्छा तरीका क्या है?
धन्यवाद
तो यहां सवाल क्या है? – zero323
स्पार्क में वैश्विक पढ़ने \ लिखने के चर को परिभाषित करने के लिए कैसे करें, उदा। मेरे उदाहरण में कैश को परिभाषित करने के लिए। – user1052610
धन्यवाद Tzach - उस प्रश्न पर नई टिप्पणी जोड़ देगा – user1052610