You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark创建单列DataFrame报错:对象长度与字段长度不匹配

问题排查与修复

错误原因

你遇到的报错翻译为:对象长度(3)与字段长度(1)不匹配
问题出在data的元素定义上:(["James","Jon","Jane"])这种写法在Python中会被解析成普通数组,而非单元素元组。Spark会把这个数组当成包含3个元素的行数据,但你的schema仅定义了1个字段,因此触发长度不匹配的错误。

修复代码

只需给每个数据元素添加逗号,明确将其定义为单元素元组:

from pyspark.sql import functions as F 
from pyspark.sql.types import IntegerType, ArrayType, StructType, StructField, StringType 

# 每个元素末尾添加逗号,明确为单元素元组
data = [ (["James","Jon","Jane"],), (["Miken","Mik","Mike"],), (["John","Johns"],)]
cols = StructType([ StructField("Name",ArrayType(StringType()),True)  ])
df = spark.createDataFrame(data=data,schema=cols)
df.printSchema()
df.show()

验证结果

执行后会输出符合预期的结果:

root
 |-- Name: array (nullable = true)
 |    |-- element: string (containsNull = true)

+--------------------+
|                Name|
+--------------------+
|[James, Jon, Jane] |
|[Miken, Mik, Mike] |
|      [John, Johns]|
+--------------------+

内容的提问来源于stack exchange,提问作者Adi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:30:42