2014-09-19 11 views
22

मैं cache() इस्तेमाल किया स्मृति में डाटा को कैश करने के लिए, लेकिन मैं मैं इसे uncache को स्मृति से डेटा हटाने की जरूरत संग्रहित डेटा के बिना प्रदर्शन को देखने के लिए महसूस किया:आरडीडी को कैसे खराब किया जाए?

rdd.cache(); 
//doing some computation 
... 
rdd.uncache() 

लेकिन मुझे मिल गया त्रुटि ने कहा:

मूल्य uncache org.apache.spark.rdd.RDD के एक सदस्य [(इंट, सरणी [फ्लोट])] नहीं है

मैं कैसे तो uncache करने के लिए पता नहीं है!

उत्तर

43

unpersist() (source) का उपयोग करने का प्रयास करें।

+0

धन्यवाद इतना @Josh – Rubbic

11

अनचाहे फ़ंक्शन मौजूद नहीं है। मुझे लगता है कि आप unpersist की तलाश में थे। स्पार्क ScalaDoc के अनुसार जो आरडीडी को निरंतर के रूप में चिह्नित करता है, और स्मृति और डिस्क से इसके लिए सभी ब्लॉक हटा देता है।

+0

धन्यवाद आप सही कर रहे हैं। मैंने जोश ने कहा कि मैंने कोशिश की और ऐसा लगता है कि यह काम कर रहा है! – Rubbic

+0

यह ठीक है। यह बिल्कुल वही जवाब है। ;) – eliasah

+3

जवाबों को मर्ज करने और निकालने के लिए यह काफी उपयोगी होगा। तुम क्या सोचते हो? –

3

यदि आप .cache() का उपयोग कर RDD में स्रोत डेटा को कैश करते हैं या आपने छोटी मेमोरी घोषित की है। या डिफ़ॉल्ट मेमोरी का उपयोग किया जाता है और इसके लिए मेरे बारे में 500 एमबी है। और आप बार-बार कोड चला रहे हैं,

फिर यह त्रुटि होती है। कोड के अंत में सभी RDD साफ़ करने का प्रयास करें, इस प्रकार प्रत्येक बार कोड चलाता है, RDD बनाया गया है और स्मृति से भी साफ़ किया गया है।

का उपयोग कर ऐसा: RDD_Name.unpersist()

संबंधित मुद्दे