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

如何将JSON格式的单行PySpark DataFrame拆分为多行?

解决方案

你读取到的full_text列实际是JSON格式的字符串,可直接通过PySpark内置的JSON解析、展平函数完成转换,全程无需转pandas,执行效率更高。

完整可运行代码

from pyspark.sql import functions as F
from pyspark.sql.types import MapType, StringType

# 读取原始数据
raw_df = spark.read.json("dbfs:/FileStore/tables/json_twitter.json").select("full_text")

# 定义匹配数据格式的JSON schema:键值均为字符串的映射结构
json_schema = MapType(StringType(), StringType())

# 解析JSON、提取内容、展平为每行一个词的标准结构
result_df = raw_df \
    .withColumn("text_map", F.from_json(F.col("full_text"), json_schema)) \
    .withColumn("word_list", F.map_values(F.col("text_map"))) \
    .withColumn("word", F.explode(F.col("word_list"))) \
    .select("word")

逻辑说明

  • 自定义的MapType schema适配你拿到的{"0": "Hello", "1": "Tweet","2": "Bye"}格式JSON
  • from_json函数将字符串格式的JSON转换为Spark可直接操作的映射类对象
  • map_values提取映射中所有的文本内容,生成数组类型的列
  • explode函数将数组中的每一个元素单独拆分为一行,最终得到每行一个词的结果

结果验证

执行result_df.show()即可看到预期输出:

+-----+
| word|
+-----+
|Hello|
|Tweet|
|  Bye|
+-----+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:15:03