2014-07-17 18 views
7

में काम नहीं कर रहे मेमोरी में बने रहें मैं स्पार्क में लगातार फीचर को कोशिश कर रहा हूं ताकि स्मृति में डेटा को बनाए रखा जा सके और उस पर कंप्यूटेशंस किया जा सके। मैं इस धारणा के तहत हूं कि स्मृति में डेटा संग्रहीत करने से एमएललिब में के-साधन क्लस्टरिंग जैसे पुनरावृत्त एल्गोरिदम के लिए गणना तेजी से हो जाएगी।स्पार्क

val data3 = sc.textFile("hdfs:.../inputData.txt") 
    val parsedData3 = data3.map(_.split('\t').map(_.toDouble)) 
    parsedData3.persist(MEMORY_ONLY) 

कॉल लागू करने के लिए निम्न त्रुटि फेंकता है:

scala> parsedData3.persist(MEMORY_ONLY) 
    <console>:17: error: not found: value MEMORY_ONLY 
        parsedData3.persist(MEMORY_ONLY) 

कोई मुझे कैसे सही ढंग से उपयोग करने के लिए एक सतत एल्गोरिथ्म में इस्तेमाल के लिए स्मृति में एक डेटा को बचाने के लिए जारी रहती है के साथ मदद कर सकते हैं?

+0

'त्रुटि की अनुमति देगा: नहीं मिला: मूल्य MEMORY_ONLY' - आप वास्तव में यह पढ़ा है ?! ;) – samthebest

+0

एहसास है कि जावा लोगों को यह पढ़ने के लिए जावा प्रश्न नहीं है, अंत में कोष्ठक डालना न भूलें: StorageLevel.MEMORY_ONLY_SER() और आयात org.apache.spark.storage.StorageLevel आयात करें; – JimLohse

उत्तर

14

आप rdd.persist किया जा रहा है के हस्ताक्षर को देखें, तो: def persist(newLevel: StorageLevel): this.type आप देख सकते हैं कि यह प्रकार 'StorageLevel' के एक मूल्य लगता है, इसलिए सही तरीका कॉल करने के लिए अपने उदाहरण में जारी रहती होगा:

parsedData3.persist(StorageLevel.MEMORY_ONLY) 

StorageLevel का साथी वस्तु इन स्थिरांक को परिभाषित करता है, तो यह संदर्भ में लाने आप सीधे निरंतर उपयोग करने के लिए (अपने कोड में के रूप में)

import org.apache.spark.storage.StorageLevel._ 
... 
parsedData3.persist(MEMORY_ONLY) // this also works 
+0

या 'MEMORY_ONLY' के बाद से' parsedData3.persist ') डिफ़ॉल्ट है – aaronman