2014-07-17 22 views
7

Verileri bellekteki verileri kalıcı hale getirmek ve üzerinde hesaplamalar yapmak için Spark uygulamasında devam özelliğini deniyorum. Verilerin hafızaya kaydedilmesinin, hesaplamaların, MLlib'de K-kümelenmesi gibi yinelemeli algoritmalar için daha hızlı olmasını sağlayacağı varsayımı altındayım.Spark içinde çalışmayan bellekte kalıcılık var.

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

çağrı ısrar aşağıdaki hatayı atar:

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

birisi doğru iteratif algoritmasında kullanılmak üzere bellekte bir veriyi kaydetmek için inat nasıl kullanılacağı yardım eder misin?

+0

'hatası (kodunuzda gibi) doğrudan sabit kullanmanızı sağlayacak: bulunamadı: değeri MEMORY_ONLY' - gerçekten bunu okudun ?! ;) – samthebest

+0

bunun, bunu okuyan Java üyeleri için bir Java sorusu olmadığını anlayın, parantezin sonuna koymayı unutmayın: StorageLevel.MEMORY_ONLY_SER() ve import org.apache.spark.storage.StorageLevel; – JimLohse

cevap

14

Eğer rdd.persist varlığın imza bakarsak: def persist(newLevel: StorageLevel): this.type bunu türü 'StorageLevel' değerini alır görebilirsiniz, bu yüzden olacağını sizin örnekte inat çağırmak için doğru yolu:

parsedData3.persist(StorageLevel.MEMORY_ONLY) 

StorageLevel tamamlayıcı nesnesi bu sabitleri tanımlar, böylece bağlam içine getirerek size

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

veya 'parsedData3.persist()' 'MEMORY_ONLY' varsayılan değer olduğundan – aaronman