首页 > 解决方案 > 我如何修复 json 结构以帮助 spark 正确读取它。相同键的不同类型

问题描述

我正在接收 json。我不知道会出现哪个键问题。当 spark 看到相同键的不同类型时,它会将其放入字符串中,我需要有数组类型的数据。我正在使用带有 json lib 的 spark 2.4,所以我将 jsons 读为
spark.read.json("jsonfile")

我正在将我的 json 模式展平为 col 名称为的这种格式:
B__C
B__somedifferentColname

示例 json 看起来像这样

{
   "A":[
      {
         "B":{
            "C":"Hello There"
         }
      },
      {
         "B":[
            {
               "C":"Hello"
            },
            {
               "C":"Hi"
            }
         ]
      }
   ]
}

我希望这个 json 格式如下:

{
   "A":[
      {
         "B":[{
            "C":"Hello There"
         }]
      },
      {
         "B":[
            {
               "C":"Hello"
            },
            {
               "C":"Hi"
            }
         ]
      }
   ]
}

如您所见,我所做的更改是将方括号添加到第一个对象。

但是当我有一个值作为结构类型和一个值作为列表时,它会将其放入字符串中,因此列值将如下所示:

"[{"C":"Hello"},{"C":"Hi"}]"

它应该看起来像
B__C
Hello
Hi
Hello There

有谁可以帮助我解决这个问题的技巧?向我们提供 json 的团队表示,从他们这边不可能做到这一点,所以我们必须在我们这边解决这个问题。

标签: jsonscalaapache-spark

解决方案


推荐阅读