【发布时间】:2016-10-23 04:26:43
【问题描述】:
我需要使用 Spark 来处理基于查询另一个索引的大量文本文件中的数据。我可以在小情况下执行此操作(通过将 RDD 转换为数组/见下文),但很难将其设置为正确处理大量数据。
我有这个:
val rootPath = "..."
val ndxRDD = sc.textFile(rootPath + "index/2016-09-01*")
def ndxToDoc(articleName: String): String = { sc.textFile(rootPath + articleName).first(); }
// works
val artcilesArr = ndxRDD.collect().map(ndxToDoc);
val articlesRDD = sc.parallelize(articlesArr)
// does not work
// val articlesRDD = ndxRDD.map(ndxToDoc)
articlesRDD.count()
我认为问题在于我正在尝试读取 rdd 中的文件。如何在没有中间 collect() - map -> textFile() - parallelize() 设置的情况下完成上述工作?
提前致谢!
【问题讨论】:
-
只是为了确保我理解您的用例 - 您有一个包含数十亿其他文件名称的文本文件,您想要加载?另外你使用的是什么版本的 Spark?
-
我有数十亿个文本文件(本质上是一个索引),其中包含数十亿个其他文件的名称。我使用的是 Spark 1.6,但如果需要,可以轻松升级到 Spark 2.0。
标签: scala apache-spark