주은혜*_*주은혜 4 numpy apache-spark rdd apache-spark-sql pyspark
我有很大的 numpy 数组。它的形状是(800,224,224,3),这意味着有3个通道的图像(224 * 244)。对于 Spark 中的分布式深度学习,我想将“numpy array”更改为“spark dataframe”。
我的方法是:
VectorAssembler创建的所有列的矢量(特征)为了从中制作一个向量:
+------+------+
|col_1 | col_2|
+------+------+
|0.1434|0.1434|
|0.1434|0.1451|
|0.1434|0.1467|
|0.3046|0.3046|
|0.3046|0.3304|
|0.3249|0.3046|
|0.3249|0.3304|
|0.3258|0.3258|
|0.3258|0.3263|
|0.3258|0.3307|
+------+------+
Run Code Online (Sandbox Code Playgroud)
对此:
+-------------+
| feature |
+-------------+
|0.1434,0.1434|
|0.1434,0.1451|
|0.1434,0.1467|
|0.3046,0.3046|
|0.3046,0.3304|
|0.3249,0.3046|
|0.3249,0.3304|
|0.3258,0.3258|
|0.3258,0.3263|
|0.3258,0.3307|
+-------------+
Run Code Online (Sandbox Code Playgroud)
但是列数真的很多...
我还尝试将 numpy 数组直接转换为 rdd,但出现“内存不足”错误。在单机中,我的工作与这个 numpy 数组配合得很好。
您应该能够将numpy数组直接转换为 Spark 数据帧,而无需通过 csv 文件。你可以尝试类似下面的代码:
from pyspark.ml.linalg import Vectors
num_rows = 800
arr = map(lambda x: (Vectors.dense(x), ), numpy_arr.reshape(num_rows, -1))
df = spark.createDataFrame(arr, ["features"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2505 次 |
| 最近记录: |