将RDD写入csv

时间:2015-02-03 08:59:47

标签: scala apache-spark

我的RDD格式为

org.apache.spark.rdd.RDD[(String, Array[String])]

我想将其写入csv文件。请建议我如何做到这一点。

执行myrdd.saveAsTextFile打开输出如下。

(875,[Ljava.lang.String;@53620618)
(875,[Ljava.lang.String;@487e3c6c)

2 个答案:

答案 0 :(得分:9)

您可以尝试:

myrdd.map(a => a._1 + "," + a._2.mkString(",")).saveAsTextFile

答案 1 :(得分:6)

另一个答案并不适合逃避。也许这是更普遍的解决方案?

import au.com.bytecode.opencsv.CSVWriter
import java.io.StringWriter
import scala.collection.JavaConversions._
val toCsv = (a: Array[String]) => {
  val buf = new StringWriter
  val writer = new CSVWriter(buf)
  writer.writeAll(List(a))
  buf.toString.trim
}
rdd.map(t => Array(t._1) ++ t._2)
   .map(a => toCsv(a))
   .saveAsTextFile(dest)