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

如何用Spark SQL将非数组嵌套JSON对象拆分为多行记录

使用Spark SQL将嵌套对象格式的events拆分为独立记录

问题场景

给定如下结构的JSON数据,其中events是键值对形式的对象而非数组,需要将其中的"a"、"b"两个事件拆分为两条独立的记录:

"events": {
    "a": {
        "eventName": "a",
        "eventIdentifier": "abc"
    },
    "b": {
        "eventName": "b",
        "eventIdentifier": "xyz"
    }
}

实现步骤

假设你已经将JSON数据加载到Spark DataFrame中,接下来通过Spark SQL完成拆分:

  1. 创建临时视图
    将DataFrame注册为临时视图,方便后续SQL操作:
CREATE OR REPLACE TEMP VIEW event_data AS
SELECT events FROM your_data_table;

(注:your_data_table替换为你实际的DataFrame名称或表名)

  1. 拆分并提取字段
    使用map_entries将Map类型的events转换为结构体数组,再通过explode展开为多行记录,最后提取目标字段:
SELECT
  event.value.eventName AS eventname,
  event.value.eventIdentifier AS eventidentifier
FROM event_data
LATERAL VIEW explode(map_entries(events)) exploded_events AS event;

执行结果

执行上述SQL后,将得到如下格式的输出:

+---------+-------------------+
|eventname|eventidentifier    |
+---------+-------------------+
|a        |abc                |
|b        |xyz                |
+---------+-------------------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:25:10