在Spark中读取CSV:有多少读者?

时间:2015-05-17 09:42:08

标签: scala csv apache-spark

以下是" Learning Spark"的示例5.13。预订,了解如何在Scala中使用textFile()加载CSV。整个群集中将创建多少个CSVReaderStringReader?它是每行文本中的一个吗?

import java.io.StringReader
import au.com.bytecode.opencsv.CSVReader
...
val input = sc.textFile(inputFile)
val result = input.map{ line =>
  val reader = new CSVReader(new StringReader(line))
  reader.readNext()
}

1 个答案:

答案 0 :(得分:2)

查看 Learning Spark 的第107页,了解如何基于每个分区工作。 .mapPartition()方法将帮助您降低初始化操作的成本,例如创建解析器的实例

import au.com.bytecode.opencsv.CSVParser

val inputData = sc.textFile(inputFile).cache()
inputData.mapPartitions(lines => {
     val parser = new CSVParser(',')
     lines.map(line => {
       parser.parseLine(line).mkString(",")
     })
   })