如何在Hive中解析嵌套的Json结构?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Hive中解析嵌套的Json结构?相关的知识,希望对你有一定的参考价值。

我有像hdfs中的以下json。

{"result": [{"sys_tags": {"display_value": "d1", "value": "v1"}, "user_input": {"display_value": "d2", "value": "v2"}}, {"sys_tags": {"display_value": "d1", "value": "v1"}, "user_input": {"display_value": "d2", "value": "v2"}}]}

我想在hive中创建一个外部表来分析数据。

我下载了json-serde-1.3.7-jar-with-dependencies.jar并添加到hive shell中。这是我跑的查询

CREATE EXTERNAL TABLE t2(result array<STRUCT<sys_tags STRUCT<display_value :STRING, value:STRING>>, STRUCT<user_input STRUCT<display_value :STRING, value:STRING>>>) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'  location 'hdfs://localhost:9000/t2';

但它没有用。任何人都可以帮忙找出问题吗?

答案

<声明中有一些不匹配的:和缺少CREATE

尝试,

CREATE EXTERNAL TABLE t2(
       result array<STRUCT<sys_tags:STRUCT<display_value:STRING, value:STRING>,user_input:STRUCT<display_value:STRING, value:STRING>>>) 
       ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'  
       location 'hdfs://localhost:9000/t2';
另一答案

它失败了因为json属性没有正确映射,试试这个:

CREATE EXTERNAL TABLE t2(result MAP<STRING, ARRAY<MAP<STRING,STRUCT<display_value :STRING, value:STRING>>>>) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'  location 'hdfs://localhost:9000/t2';

以上是关于如何在Hive中解析嵌套的Json结构?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Hive解析多个嵌套的JSON数组

如何在 Ios 中解析数组数据中的嵌套 Json 对象

如何使用单个字段的混合结构/字符串值解析 Hive 中的 JSON?

在 Hive 中,这种模式如何从 json 数组中识别嵌套的 json?

如何解析嵌套的 JSON 字典(地图)

AWS Glue:如何将嵌套的 Hive 结构扩展到 Dict?