JSON文件具有如下结构:
"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"
}
...
}当使用以下内容运行该查询时
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
数组显然存在一个问题。我不知道这个结构应该是什么。你知道如何对这种结构的多维数组进行分解吗?
发布于 2018-02-01 21:21:51
您的JSON不包含任何数组元素。因此,您必须使用map列类型来访问这个结构,而不是数组。
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/'您可以通过以下查询语法访问地图:
select t.ArrayofArrays['array-1'] from test14 thttps://stackoverflow.com/questions/48553340
复制相似问题