【问题标题】:Accessing Nested Elements访问嵌套元素
【发布时间】:2021-07-09 16:58:12
【问题描述】:

我正在尝试从 API 调用返回的 JSON 字符串构建数据帧。

我的架构如下:


|-- 报告:结构 (nullable = true)
| |-- 付款:数组(可为空 = true)
| | |-- 元素:结构 (containsNull = true)
| | | |-- id: 字符串 (可为空 = true)
| | | |-- 计数:字符串(可为空 = true)
| | | |-- 流名:字符串(可为空 = true)
| | | |-- 日期:字符串(可为空 = true)
| | | |-- 名称:字符串(可为空 = true)
| | | |-- 金额:字符串(可为空 = true)

我的最终目标是生成一个数据框,其列标题为 id、count、flowName、date、name 和 amount。我没有使用爆炸功能。任何帮助将不胜感激。

【问题讨论】:

    标签: json scala apache-spark apache-spark-sql


    【解决方案1】:

    您可以简单地explode 为数组类型,

      df.select(explode($"report.payments") as "col")
        .select("col.*").show(false)
    

    【讨论】:

      【解决方案2】:

      你可以使用inline:

      val df2 = df.selectExpr("inline(report.payments)")
      

      【讨论】: