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

PySpark中如何将from_json生成的Column转为单列DataFrame

解决方法

首先明确:from_json返回的是Spark Column表达式,不是可迭代的Python数据集合,直接传给createDataFrame会触发TypeError: Column is not iterable错误——因为Spark无法将Column对象当作数据源使用。

方法1:解析后拆分数组为单行单列DataFrame

如果需要把JSON数组里的每个元素单独成一行,用explode函数展开数组即可:

from pyspark.sql.functions import from_json, explode
from pyspark.sql.types import ArrayType, StringType

jsonlist = '["a","b","c"]'
# 先构建包含原始JSON字符串的临时DataFrame
temp_df = spark.createDataFrame([(jsonlist,)], ["json_str"])
# 解析JSON字符串为数组类型列
parsed_df = temp_df.withColumn("items", from_json("json_str", ArrayType(StringType())))
# 展开数组得到单行单列结果
result_df = parsed_df.select(explode("items").alias("item"))
result_df.show()

执行后输出:

+----+
|item|
+----+
|   a|
|   b|
|   c|
+----+

方法2:保留数组作为单列值

如果不需要拆分数组,只想把整个解析后的数组作为单列内容:

from pyspark.sql.functions import from_json
from pyspark.sql.types import ArrayType, StringType

jsonlist = '["a","b","c"]'
temp_df = spark.createDataFrame([(jsonlist,)], ["json_str"])
result_df = temp_df.select(from_json("json_str", ArrayType(StringType())).alias("item"))
result_df.show()

执行后输出:

+---------+
|     item|
+---------+
|[a, b, c]|
+---------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:12:07