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

Scala中如何从嵌套JSON提取指定列生成Spark DataFrame

从嵌套JSON提取指定列生成Spark DataFrame

处理步骤

  1. 展开数组列
    原始DataFrame中的objects是数组类型,需要先使用explode函数将数组内的每个元素拆分为单独行,才能访问元素内部的嵌套字段:
import org.apache.spark.sql.functions.explode

// 展开objects数组,将每个元素转为单独行的struct列
val explodedDF = df.select(explode($"objects").alias("obj"))
  1. 提取嵌套字段
    展开后的obj是一个结构体,包含caucus字段以及嵌套的person结构体。通过.操作符直接访问嵌套字段,并为列设置目标名称:
val resultDF = explodedDF.select(
  $"obj.person.name".alias("Name"),
  $"obj.person.party".alias("Party"),
  $"obj.caucus".alias("Caucus")
)
  1. 查看结果
    执行resultDF.show()即可得到目标结构的DataFrame:
+-----+-----------+-----------+
| Name|      Party|     Caucus|
+-----+-----------+-----------+
| Mary|Green Party|Progressive|
+-----+-----------+-----------+

合并写法

也可以将两步合并为一行代码,简化操作:

import org.apache.spark.sql.functions.explode

val resultDF = df.select(explode($"objects").alias("obj"))
                 .select(
                   $"obj.person.name".alias("Name"),
                   $"obj.person.party".alias("Party"),
                   $"obj.caucus".alias("Caucus")
                 )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:45:46