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

如何仅用PySpark SQL提取JSON中的所有嵌套键(如nk1、nk2)

解决方案

要提取StructType中嵌套键的名称并生成目标DataFrame,只需利用Spark Schema的元数据动态获取字段名,再转换为DataFrame即可,具体步骤如下:

  1. 读取JSON数据(原有代码保留):
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("ExtractNestedKeys").getOrCreate()
raw = spark.read.option("multiline", "true").json("file/path")
  1. 提取嵌套键名称:
    通过raw.schema获取数据结构,定位到key字段的StructType,遍历其子字段提取名称:
# 获取key结构体下所有子字段的名称
nested_key_names = [field.name for field in raw.schema["key"].dataType.fields]
  1. 生成目标DataFrame:
    将提取到的键名列表转换为Spark DataFrame,指定列名为Column:
# 把键名列表转为DataFrame
result_df = spark.createDataFrame([(key,) for key in nested_key_names], ["Column"])

# 查看结果
result_df.show()

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

+------+
|Column|
+------+
|  nk1 |
|  nk2 |
+------+

补充说明

  • 不能用explode是因为它仅适用于**数组(ArrayType)或映射(MapType)**类型,而你的数据中key是结构体(StructType),需通过Schema元数据提取字段名。
  • 该方法是动态适配的,即使key下新增更多嵌套键(如nk3、nk4),代码也能自动提取所有键名,无需修改逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:22:44