मैं स्पार्क के लिए नया हूं और यह समझना चाहता हूं कि स्मृति में डेटाफ्रेम को जारी रखने और जारी रखने के लिए अतिरिक्त ओवरहेड/देरी है या नहीं।

अब तक मुझे जो पता है, उससे डेटा मूवमेंट नहीं होता है जो तब होता है जब हम कैशे डेटाफ्रेम का इस्तेमाल करते हैं और यह सिर्फ एक्ज़ीक्यूटर की मेमोरी में सेव होता है। तो यह केवल ध्वज को स्थापित/अनसेट करने का मामला होना चाहिए।

मैं स्पार्क स्ट्रीमिंग जॉब में डेटाफ्रेम कैशिंग कर रहा हूं और जानना चाहता हूं कि इससे बैच निष्पादन में अतिरिक्त देरी हो सकती है या नहीं।

1
conetfun 7 अप्रैल 2020, 10:29

1 उत्तर

सबसे बढ़िया उत्तर

यदि स्मृति में डेटाफ़्रेम को बनाए रखने और अन-निरंतर रखने के लिए अतिरिक्त ओवरहेड/देरी है।

निर्भर करता है। यदि आप केवल डेटाफ़्रेम को जारी रखने के लिए चिह्नित करते हैं, तो वास्तव में कुछ भी नहीं होता है क्योंकि यह एक आलसी ऑपरेशन है। डेटाफ़्रेम हठ/कैशिंग को ट्रिगर करने के लिए आपको एक क्रिया निष्पादित करनी होगी। कार्रवाई के साथ आप एक अतिरिक्त ओवरहेड जोड़ते हैं।

इसके अलावा, दृढ़ता (कैशिंग) को डेटा को पूर्व-गणना करने और इसे निष्पादकों (स्मृति, डिस्क या उनके संयोजन) के करीब सहेजने के तरीके के रूप में सोचें। यह चलती डेटा जहां से यह निष्पादकों के लिए रहता है, निष्पादन समय पर एक अतिरिक्त ओवरहेड जोड़ता है (भले ही यह थोड़ा सा हो)।

आंतरिक रूप से, स्पार्क डेटा को ब्लॉक के रूप में प्रबंधित करता है (निष्पादकों पर ब्लॉकमैनेजर का उपयोग करके)। वे मांग पर ब्लॉक का आदान-प्रदान करने के लिए सहकर्मी हैं (टोरेंट जैसे प्रोटोकॉल का उपयोग करके)।

डेटाफ़्रेम को अनसुना करना केवल RDD ब्लॉक को हटाने के लिए BlockManagers को एक अनुरोध (सिंक या async) भेजने के लिए है। यदि यह एसिंक तरीके से होता है, तो ओवरहेड कोई नहीं है (कार्यों को चलाने के दौरान अतिरिक्त कार्य निष्पादकों को करना पड़ता है)।

तो यह केवल ध्वज को स्थापित/अनसेट करने का मामला होना चाहिए।

एक मायने में, यह कवर के नीचे है। चूंकि डेटाफ़्रेम या आरडीडी वितरित संगणनाओं का वर्णन करने के लिए केवल अमूर्त हैं और निर्माण के समय कुछ भी नहीं करते हैं, यह केवल एक ध्वज को सेट / अनसेट करना है।

निष्पादन के समय परिवर्तन देखा जा सकता है।

मैं स्पार्क स्ट्रीमिंग जॉब में डेटाफ्रेम कैशिंग कर रहा हूं और जानना चाहता हूं कि इससे बैच निष्पादन में अतिरिक्त देरी हो सकती है या नहीं।

यदि आप async कैशिंग (डिफ़ॉल्ट) का उपयोग करते हैं, तो बहुत कम विलंब होना चाहिए।

1
Jacek Laskowski 7 अप्रैल 2020, 12:07