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

使用spark.createDataFrame转换pandas DataFrame仅复制表头无数据问题

问题排查与解决方案

1 优先排查低级变量名错误

你提供的代码中,创建Spark DataFrame时赋值的变量名为sparkD,后续调用show()方法的是sparkDF,两个变量名不一致,如果是笔误写错了变量名,调用未正确赋值的空变量就会出现只有表头、没有数据的情况,修改为统一变量名即可:

# 统一变量名
sparkDF = spark.createDataFrame(pandasDF)
sparkDF.show()

2 变量名无误时排查类型兼容问题

如果确认变量名正确,大概率是pandas DataFrame的列数据类型和Spark支持的类型不匹配导致数据读取失败,常见场景和解决方法:

  • 排查pandas是否使用了Nullable扩展类型(如Int64、StringDtype、BooleanDtype等),Spark 2.x版本对这类类型支持极差,可先将列转换为pandas传统基础类型再转换:
# 所有列转换为object类型后再转Spark DF,测试是否能正常读取数据
pandasDF = pandasDF.astype(object)
sparkDF = spark.createDataFrame(pandasDF)
  • 排查是否存在复杂类型列(如列表、字典、自定义类对象),这类类型无法直接转换为Spark DF,需要先做序列化或拆分为基础类型列。

3 排查Arrow兼容问题

如果你开启了Spark的Arrow优化配置(spark.sql.execution.arrow.enabled=true),Arrow版本与Spark、pandas版本不兼容时也会出现空数据问题,可临时关闭Arrow配置后重试:

# 关闭Arrow优化后重试转换
spark.conf.set("spark.sql.execution.arrow.enabled", "false")
sparkDF = spark.createDataFrame(pandasDF)

4 确认原pandas数据有效性

执行以下代码确认原pandas DataFrame确实包含有效数据:

print(pandasDF.shape)
print(pandasDF.head())

如果输出行数确实为161,即可排除原数据为空的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 07:24:03