在pyspark中读取CSV并转换为浮动

时间:2017-09-14 21:58:30

标签: apache-spark pyspark

我是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

感谢任何帮助。 谢谢!

1 个答案:

答案 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了解说明