坚持记忆不在Spark中工作

时间:2014-07-17 07:28:50

标签: apache-spark persist

我正在尝试使用Spark中的持久性功能将数据保存在内存中并对其进行计算。我假设将数据存储在内存中会使迭代算法的计算速度更快,例如MLlib中的K-means聚类。

    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 个答案:

答案 0 :(得分:14)

如果您查看rdd.persist的签名:def persist(newLevel: StorageLevel): this.type,您可以看到它的值为&#39; StorageLevel&#39;,因此正确的方法可以在您的例如:

parsedData3.persist(StorageLevel.MEMORY_ONLY) 

StorageLevel的伴随对象定义了这些常量,因此将其置于上下文中将允许您直接使用常量(如代码中所示)

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