【问题标题】:How to query a json in Amazon Athena?如何在 Amazon Athena 中查询 json?
【发布时间】:2020-06-02 23:47:32
【问题描述】:

我有一个类似下面的json数组结构:

[elem1
 elem2 
 attr
  -- code1
  -- code2
]

我能够上传这些 json 并正确保留它们的格式,并使用 AWS Glue 抓取 json,我得到了所有正确的数据结构元素(attr 有很多子元素被正确提取)。

当我去雅典娜时;然而,我做了一个select *,我得到了 3 个基本列(elem1、elem2、attr),但是这些行将每个 json 作为一个整体:

elem1                                            |elem2                                                
---------------------------------------------------------------------------------------------------
{elem1:"a",elem2:"b",attr:{code1:"1",code2:"2"}} |{elem1:"a",elem2:"b",attr:{code1:"1",code2:"2"}}

(以 attr 作为最后的列名)

有趣的是,当我对数据进行关系化并将其制成 parquet 文件时,所有字段都被保留了,但我担心某种数据丢失,因为一行存储了多个 json,所以可能是某种覆盖问题。

关于如何进行的任何想法?我一直在尝试寻找在 Athena 上查询 json 的方法,但这可能只是 json 本身的问题(我下载了 json 并查看了结构,它在视觉上看起来很好)。

【问题讨论】:

    标签: sql json aws-glue amazon-athena


    【解决方案1】:

    您使用的 JSON 格式不起作用的原因是 this。该行为是预期的,并且为了让您的 JSON 文件正常工作,每条记录都必须出现在单独的行上。另请参阅this 讨论要求要在 Athena 中解析 JSON 编码的数据,请确保每个 JSON 文档都在自己的行中,并用新行分隔。

    【讨论】:

      【解决方案2】:

      我最终不得不像在post 中所做的那样完全重新格式化 json 文件。当然,Athena 确实支持进行 json 查询,我建议使用DBeaver 进行更复杂的查询。

      【讨论】:

        猜你喜欢
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 2017-08-04
        • 2019-08-25
        • 2021-05-26
        相关资源
        最近更新 更多