如何将案例类的RDD映射到LabeledPoint(标签,特征向量)

时间:2017-05-03 23:53:10

标签: scala apache-spark

如何将案例类的RDD映射到LabeledPoint(标签,特征向量)。

这是案例类考试的RDD(x:Double,y:Double):

DS(1.0,6.0)

DS(2.0,8.0)

DS(3.0,10.0)

DS(3.0,10.0)

DS(4.0,12.0)

DS(5.0,14.0)

尝试这样做 -

     val parsedData = aRDD.map(row =>
     new LabeledPoint(
     row._1,
     Vectors.dense(row._2))

获取错误"值_1不是main.scala.spark.Q1Partb.Q1.Exam"的成员。在row._1和row._2

和 -

          val parsedData = aRDD.map{line => 
          val Array(rawLabel, rawfeatures) = line.split(',')
          val features = rawfeatures) .split(' ').map(_.toDouble)
          LabeledPoint(rawLabel.toDouble, Vectors.dense(features))}

获取错误"递归值x $ 4需要类型"对于rawLabel和"值拆分不是main.scala.spark.Q1Partb.Q1.ds"的成员。 for line.split(',')

2 个答案:

答案 0 :(得分:1)

如果您有RDD [考试],您应该可以写

val parsedData = aRDD.map(exam => LabeledPoint(exam.x, Vectors.dense(exam.y))

答案 1 :(得分:1)

我遇到了这个问题,因为我的变量名是由函数获取的。

所以 private val Seq(transaction, transaction2) = insertTx(...

成了

private val Seq(transaction1, transaction2) = insertTx(...

交易是罪魁祸首。