我需要使用spark阅读和处理大型文本文件。
下面的代码/解决方案目前似乎工作正常。 但是,正如我读到的那样,通过执行rdd.collect()将整个文件加载到内存中,我们将无法获得RDD的好处。此操作影响重大
val input = sparkContext.textFile(“file-date.txt”)
val fileData = input.collect()
var fileLines = fileData.asScala.toList
val buf = scala.collection.mutable.ArrayBuffer.empty[scala.collection.mutable.Map[String, String]]
fileLines.foreach(line => buf += processSingleLine(line))
处理此行并返回地图的方法
def processSingleLine(line: String): scala.collection.mutable.Map[String, String] = {
// process and return key-value based map
}
请提出替代解决方案。这个想法是读取文件的内容并并行处理每一行。