如何使用Apache Spark逐行(并行)处理大型文本文件?

时间:2019-05-15 18:51:31

标签: scala apache-spark apache-spark-sql

我需要使用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
}

请提出替代解决方案。这个想法是读取文件的内容并并行处理每一行。

0 个答案:

没有答案