我是Spark的新手。
我正在尝试阅读CSV文件,并使用RowMatrix
将其转换为PySpark
。
以下是我的数据格式:
1.,2.,3.,4.,5.
6.,3.,2.,1.,5.
10.,20.,40.,70.,1.
5.,3.,1.,2.,9.
我将此文件作为RDD读取的代码如下:
rows = sc.textFile('testmatrix.txt').map( lambda line: line.split(",").map(lambda values: float(values)))
我从Spark示例中了解到,在创建RowMatrix
之前,我需要创建密集向量。
我的问题是:如何从上面的代码继续将数据转换为密集向量,最终转换为RowMatrix
。
感谢任何帮助。 谢谢!
答案 0 :(得分:1)
您不需要denseVectors
,您可以直接将RowMatrix
应用于RDD
:
rows = sc.textFile('testmatrix.txt')\
.map(lambda line: line.split(","))\
.map(lambda line: [float(val) for val in line])
from pyspark.mllib.linalg.distributed import RowMatrix
mat = RowMatrix(rows)
并返回
rowsRDD = mat.rows
请参阅https://spark.apache.org/docs/2.1.0/mllib-data-types.html#rowmatrix了解说明