以下是" Learning Spark"的示例5.13。预订,了解如何在Scala中使用textFile()
加载CSV。整个群集中将创建多少个CSVReader
和StringReader
?它是每行文本中的一个吗?
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()
}
答案 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(",")
})
})