获取Dataframe Row

时间:2015-08-12 09:35:54

标签: scala apache-spark apache-spark-mllib

所以我从镶木地板文件中加载了一个数据框。此数据框现在包含未指定数量的列。第一列是Label,以下是功能。

我想将数据框中的每一行保存为LabeledPoint。

到目前为止我在想:

val labeledPoints: RDD[LabeledPoint] =df.map{row => LabeledPoint(row.getInt(0),Vectors.dense(row.getDouble(1),row.getDouble(2)))}

很容易获得列索引,但在处理大量列时,这不会成功。我希望能够将从索引1开始的整个行(因为索引0是标签)加载到密集向量中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题

df.map {
  row: Row => 
    val data = for (index <- 1 until row.length) yield row.getDouble(index)
    val vector = new DenseVector(data.toArray)
    new LabeledPoint(row.getInt(0), vector)
}