我有一个形式为:
的PySpark数据框+--------------------+
| col_name|
+--------------------+
|[val1, val2, val3] |
|[val1, val2, val3] |
+--------------------+
我想将其转换为矩阵形式的RDD,以便最终将其转换为RowMatrix
。但是,当我使用df.rdd
时,它会给我一个RDD,其中包含Row
个对象,例如:
[Row(col_name=DenseVector([val1, val2, val3])),
Row(col_name=DenseVector([val1, val2, val3]))]
我如何解决这个问题,以便我的RDD只包含我的DenseVector
个对象而不是Row
个具有DenseVector
s的对象,即形式为:< / p>
[DenseVector([val1, val2, val3]),
DenseVector([val1, val2, val3])]
如何实现?
答案 0 :(得分:-2)
你可以使用:
df.rdd.map(row => <convert row to DenseVector>)
在scala中,您可以使用代码获取行中的列值:
row.getAs[Int](0)
其中Int 0是列的索引。 在scala中,DenseVector构造函数需要双精度数组,所以如果你有3个solumns,你可以做类似的事情
df.rdd.map(row => row.getAs[DenseVector](0))