PySpark - 从Numpy矩阵创建DataFrame

6

我有一个numpy矩阵:

arr = np.array([[2,3], [2,8], [2,3],[4,5]])

我需要从arr创建一个PySpark数据框。由于arr的长度/值将动态更改,因此我无法手动输入值,所以需要将arr转换为数据框。
我尝试了以下代码,但没有成功。
df= sqlContext.createDataFrame(arr,["A", "B"])

然而,我遇到了以下错误。
TypeError: Can not infer schema for type: <type 'numpy.ndarray'>
3个回答

8
import numpy as np

#sample data
arr = np.array([[2,3], [2,8], [2,3],[4,5]])

rdd1 = sc.parallelize(arr)
rdd2 = rdd1.map(lambda x: [int(i) for i in x])
df = rdd2.toDF(["A", "B"])
df.show()

输出结果为:

+---+---+
|  A|  B|
+---+---+
|  2|  3|
|  2|  8|
|  2|  3|
|  4|  5|
+---+---+

5

无需使用RDD API。只需:

mat = np.random.random((10,3))
cols = ["ColA","ColB","ColC"]
df = spark.createDataFrame(mat.tolist(), cols)
df.show()

-1
import numpy as np
from pyspark.ml.linalg import Vectors
arr = np.array([[2,3], [2,8], [2,3],[4,5]])
df = np.concatenate(arr).reshape(1000,-1)
dff = map(lambda x: (int(x[0]), Vectors.dense(x[1:])), df)
mydf = spark.createDataFrame(dff,schema=["label", "features"])
mydf.show(5)

我在第4行收到了ValueError: cannot reshape array of size 8 into shape (1000,newaxis)的错误。 - Bryce Ramgovind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接