Persist в памяти не работает в Spark
Я пытаюсь сохранить функцию в Spark, чтобы сохранить данные в памяти и выполнить вычисления на ней. Я предполагаю, что хранение данных в памяти сделает вычисления быстрее для итеративных алгоритмов, таких как кластеризация K-средних в MLlib.
val data3 = sc.textFile("hdfs:.../inputData.txt")
val parsedData3 = data3.map( _.split('t').map(_.toDouble))
parsedData3.persist(MEMORY_ONLY)
вызов persist вызывает следующую ошибку:
scala> parsedData3.persist(MEMORY_ONLY)
<console>:17: error: not found: value MEMORY_ONLY
parsedData3.persist(MEMORY_ONLY)
может кто-нибудь помочь мне с тем, как правильно использовать persist для сохранения данных в памяти для использования в итерационном алгоритме?
1 ответов
если вы посмотрите на подпись rdd.persist
время: def persist(newLevel: StorageLevel): this.type
вы можете видеть, что он принимает значение типа "StorageLevel", поэтому правильным способом вызова persist в вашем примере будет:
parsedData3.persist(StorageLevel.MEMORY_ONLY)
сопутствующий объект StorageLevel определяет эти константы, поэтому приведение его в контекст позволит вам использовать константу напрямую (как в вашем коде)
import org.apache.spark.storage.StorageLevel._
...
parsedData3.persist(MEMORY_ONLY) // this also works