में मूल्यांकन किया जाता रहा मुद्दा यह है कि स्काला में वहाँ आपरेशन के 2 प्रकारक्यों जारी रहती है() lazily स्पार्क
- रूपांतरण
- क्रिया
रूपांतरण नक्शा(), फिल्टर (की तरह हैं समझा) आलसी मूल्यांकन किया जाता है। तो, यह निष्पादन क्रिया निष्पादन पर किया जा सकता है। उदाहरण के लिए यदि मैं पहले क्रिया निष्पादित करता हूं() तो स्पार्क केवल पहली पंक्ति पढ़ने के लिए अनुकूलित होगा।
लेकिन क्यों जारी रखें() ऑपरेशन का आलस्य मूल्यांकन किया जाता है। क्योंकि मैं जिस तरह से जाता हूं, उत्सुकता से या आलसी, यह भंडारण स्तर के अनुसार पूरे आरडीडी को जारी रखने जा रहा है।
क्या आप कृपया मुझे विस्तार से बता सकते हैं कि क्यों() कार्रवाई के बजाय परिवर्तन() है।
झूठा वे समान नहीं हैं, 'जारी रखें' डिस्क पर बचाता है लेकिन 'कैश' मेम में बचाता है, इसके अलावा 'बने' के पास 'स्कैला' और 'जावा' एपीआई पर काम करने के कई तरीके हैं। –
मैं खड़ा हूं (आंशिक रूप से सही): कैश() = persist() = persist (StorageLevel.MEMORY_ONLY) यह अभी भी अस्थायी रूप से मध्यवर्ती गणना को कैश करने का एक तरीका है। यह केवल तभी किया जाता है जब आवश्यक हो यह एक आलसी ऑपरेशन है –
यह मेरा सवाल है "क्यों बने रहें() आलसी कॉल करें?" क्योंकि अंततः यह भंडारण स्तर के अनुसार (उस संदर्भ जीवनकाल के लिए) आरडीडी स्टोर करने जा रहा है (जैसे MEMORY_ONLY, DISK_ONLY, आदि)। अन्य परिवर्तनों में, मैं मानता हूं कि हम आलस्य के साथ लागत अनुकूलन प्राप्त कर सकते हैं। –