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