python - 如何将spark rdd转换为numpy数组?

标签 python numpy apache-spark pyspark

我已经使用spark上下文读取了textFile,测试文件是一个csv文件。下面的 testRdd 是与我的 rdd 类似的格式。

testRdd = [[1.0,2.0,3.0,4.0,5.0,6.0,7.0],
[0.0,0.1,0.3,0.4,0.5,0.6,0.7],[1.1,1.2,1.3,1.4,1.5,1.6,1.7]]

我想将上面的 rdd 转换为 numpy 数组,这样我就可以将 numpy 数组输入到我的机器学习模型中。

当我尝试以下操作时

 feature_vector = numpy.array(testRDD).astype(numpy.float32)

它给了我以下类型错误:

TypeError: float() argument must be a string or a number

我应该如何将spark rdd转换为numpy数组。

最佳答案

在调用 numpy.array 之前,您必须将数据收集到本地计算机:

import numpy as np

a = np.array(testRdd.collect())
print(a)
#array([[ 1. ,  2. ,  3. ,  4. ,  5. ,  6. ,  7. ],
#       [ 0. ,  0.1,  0.3,  0.4,  0.5,  0.6,  0.7],
#       [ 1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7]])

或者,如果您希望每一行作为单独的数组:

b = testRdd.map(np.array).collect()
print(b)
#[array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.]),
# array([ 0. ,  0.1,  0.3,  0.4,  0.5,  0.6,  0.7]),
# array([ 1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7])]

关于python - 如何将spark rdd转换为numpy数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190994/

相关文章:

php - Python:从 python 脚本调用 php 脚本时未找到 PHP fatal error 类

python - 用 0 和 1 填充的 numpy 二维数组的所有组合

python - 在Python中使用正则表达式获取字符串的一部分

python - 如何从 Flask Rest API 在后台运行长时间运行的 python 脚本?

python - 如何将图像的每一帧的二维数组写入csv?

json - Graphx 中使用 Spark 的最短路径性能

scala - 在 Spark 中选择每行的所有非空列名

python - Python 上的映射字段

python - 如何在 Python 中关联两个音频事件(检测它们是否相似)

docker - 如何修复 namespace [non-default-namespace] 中名称为 [spark-wordcount-driver] 的种类 [pod] 的错误“操作 [get] 失败”