Scala - 如何将csv表读入RDD [Vector]

时间:2018-03-24 12:19:40

标签: scala csv apache-spark matrix rdd

我想从一个巨大的csv文件中读取,通过“,”分割值将每一行分配给一个向量。最后,我的目标是拥有一个包含值的矢量RDD。 但是在Seq:

之后我收到了一个错误

类型不匹配; found:需要的单位:org.apache.spark.mllib.linalg.Vector涉及默认参数的应用程序中发生错误。

到目前为止,我的代码是这样的:

val file = "/data.csv"
val data: RDD[Vector] =sc.parallelize(
  Seq(
    for(line <- Source.fromFile(file).getLines){
      Vectors.dense(line.split (",").map (_.toDouble).distinct)
    }
  )
)

1 个答案:

答案 0 :(得分:1)

您应该使用 sparkContext的textFile api 作为

阅读它
val file = "/data.csv"
val data = sc.textFile(file).map(line => Vectors.dense(line.split (",").map(_.toDouble).distinct))

你应该得到org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]

但如果您正在寻找RDD[Vector[Double]],那么您可以直接进行

val file = "/data.csv"
val data = sc.textFile(file).map(line => line.split (",").map(_.toDouble).distinct.toVector)