如何在AmazonAthena中查询json?

b5lpy0ml  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(470)

我有一个类似于以下内容的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并查看了它的结构,它看起来很好)。

nafvub8i

nafvub8i1#

最后,我不得不完全重新格式化json文件,就像我在本文中所做的那样。athena当然支持json查询,我建议使用dbeaver进行更复杂的查询。

dced5bon

dced5bon2#

您正在使用的json格式之所以不起作用,就是因为这个原因。这种行为是预期的,为了让json文件正常工作,每个记录必须出现在单独的行中。另外,请参阅本文,讨论在athena中解析json编码数据的需求,确保每个json文档都在自己的行中,并用新行分隔。

相关问题