【发布时间】:2015-10-21 16:36:04
【问题描述】:
我正在 Spark 中读取一个大型 CSV 文件,我想使用 CSVParser 库 (au.com.bytecode.opencsv.CSVParser) 解析每一行
这是我的代码:
val parsedLines = sc.textFile("path/to/a/csv/file.csv").map(line => {
val parser = new CSVParser(',')
try{
parser.parseLine(line)
}catch{
case e: Exception => "Error"
}
})
调用parser.parseLine(line) 的结果是Array[String]。
我无法在地图之外创建解析器,因为 CSVParser 类不可序列化。
可以像我在上面的代码中那样在 map 函数中调用 new CSVParser(',') 吗?...如果是,为什么?...如果不是,为什么?
是否为 RDD 的每个元素调用 new CSVParser(',')?
有没有更有效的方法来以不同的方式进行相同的处理?
【问题讨论】:
标签: scala serialization apache-spark