从元组列表创建 Spark DataFrame

问题描述 投票:0回答:1

我正在使用 CIFAR10 数据,并创建了包含以下数据的元组列表:

(6.0, [0.23137255,   0.24313726,   0.24705882,   0.16862746,   0.18039216,   0.1764706,   0.19607843, .....]), 
(9.0, [0.23137255,   0.24313726,   0.24705882,   0.16862746,   0.18039216,   0.1764706,   0.19607843, .....]), 
...

其中元组的第一个元素是标签,第二个元素是展平的像素值。

当我运行线路时:

train_df = spark.createDataFrame(dff, schema = ["label", "features"])

我收到以下错误:

PySparkTypeError: \[CANNOT_INFER_TYPE_FOR_FIELD\] Unable to infer the type of the field `features`.

您能帮我确定我在这里做错了什么或者我错过了什么吗?我是 PySpark 的新手,我正在尝试使用 PySpark 明确解决这个问题。

我正在尝试得到这样的东西:

+------------------+------------------+
| Label | Features                    | 
+------------------+------------------+
| 6.0   | 0.23137255, 0.24313726, ... |  
| 9.0   | 0.23137255, 0.24313726, ... |  
...

我尝试将其转换为 pandas df,然后将其转换为 Spark df,但我的 RAM 不足,我在 Colab Notebook 中运行它。

python-3.x pyspark apache-spark-sql
1个回答
0
投票

根据您需要的结果,

Features
字段应为
array
类型。

您需要将

dff
定义为标准元组列表才能创建数据框。

dff = [
    (6.0, [0.23137255, 0.24313726, 0.24705882, 0.16862746, 0.18039216, 0.1764706, 0.19607843]),
    (9.0, [0.23137255, 0.24313726, 0.24705882, 0.16862746, 0.18039216, 0.1764706, 0.19607843]),
]
df = spark.createDataFrame([dff, ], schema=['label', 'features'])
© www.soinside.com 2019 - 2024. All rights reserved.