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

How to parse nested Json structure in Hive?

我在 hadfs 中有 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"}}]}

我想在配置单元中创建一个外部 table 来分析数据。

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

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';

但它不起作用。任何人都可以帮助解决问题吗?

它失败了,因为 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';

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';