首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS雅典娜JSON多维阵列结构

AWS雅典娜JSON多维阵列结构
EN

Stack Overflow用户
提问于 2018-01-31 23:51:16
回答 1查看 1K关注 0票数 1

JSON文件具有如下结构:

代码语言:javascript
复制
"otherstuff" : "stuff",
"ArrayofArrays" : {
   "Array-1" : {
      "type" : "sometype",
      "is_enabled" : false,
      "is_active" : false,
      "version" : "version 1.1"
   },
   "Array-2" : {
      "type" : "sometype",
      "is_enabled" : false,
      "is_active" : false,
      "version" : "version 1.2"
   }
   ...
}

当使用以下内容运行该查询时

代码语言:javascript
复制
CREATE EXTERNAL TABLE IF NOT EXISTS test2.table14 (
`otherstuff` string,
`ArrayofArrays` array<array<struct<version:string>>>
) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
     'serialization.format' = '1' ) LOCATION 's3://bucket/folder/' TBLPROPERTIES ('has_encrypted_data'='false')

但是,当我运行基本预览表查询时,会得到以下错误。

HIVE_BAD_DATA:无法将字段#:org.openx.data.jsonserde.json.JSONObject的字段值解析为org.openx.data.jsonserde.json.JSONArray

数组显然存在一个问题。我不知道这个结构应该是什么。你知道如何对这种结构的多维数组进行分解吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-01 21:21:51

您的JSON不包含任何数组元素。因此,您必须使用map列类型来访问这个结构,而不是数组。

代码语言:javascript
复制
CREATE EXTERNAL TABLE test14 (
  otherstuff string,
  ArrayofArrays map<string,struct<
     is_enabled:boolean,
     is_active:boolean,
     type:string,
     version:string
  >>
) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('serialization.format' = '1' ) 
LOCATION 's3://bucket/'

您可以通过以下查询语法访问地图:

代码语言:javascript
复制
select t.ArrayofArrays['array-1'] from test14 t
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48553340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档