在雅典娜中读取不一致的嵌套json

n8ghc7c1  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(185)

在雅典娜,我正在把一些嵌套的json文件读入一个表中。实际包含嵌套json的字段在原始数据的不同文件中的字段数不一致。
有时数据看起来像这样:

{
          "id": "9f1e07b4",
          "date": "05/20/2018 02:30:53.110 AM",
          "data": {
            "a": "asd",
            "b": "adf",
            "body": {
              "sid": {
                "uif": "yes",
                "sidd": "no",
                "state": "idle"
              }
            },
            "category": "scene"
          }
        }

其他时候数据看起来像这样:

{
  "id": "9f1e07b4",
  "date": "05/20/2018 02:30:45.436 AM",
  "data": {
    "a": "event",
    "b": "state",
    "body": {
      "persona": {
        "one": {
          "movement": "idle"
        }
      }
    },
    "category": "scene"
  }
}

其他时候,“body”字段同时包含“sid”结构和“persona”结构。
如你所见,在“body”中给出的字段并不总是一致的。我试图在createexternal表查询中添加所有可能的字段及其结构。但是,包含“body”字段的“data”列在我在雅典娜中“preview table”时仍然没有填充并保持空白。
在create表ddl中,是否有一种方法指示我要用空值填充每个文件的嵌套json中不存在的所有列?
此外,为查询中的字段指定的“名称”不必与原始json中的键值相对应。雅典娜似乎只是在读这个结构而不是别的。有没有办法直接指出哪个json键对应哪个athena字段名?因此,如果某个文件的“正文”中缺少某些字段,雅典娜可以知道缺少哪一个字段并将其填充为空?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题