Hive如何使用get_json_object函数从JSON字符串中获取内容

x33g5p2x  于2020-11-13 发布在 Hive  
字(1.5k)|赞(0)|评价(0)|浏览(3866)

JSON介绍

JSON 是以JavaScript对象表示法(JSON)存储的简单数据结构和对象的格式,该格式是标准的数据交换格式。Json主要用于Web应用程序间传输数据。许多Web应用程序都使用json在应用程序和服务器之间进行数据传输。在本文中,我们将如何使用Hive get_json_object函数从json字符串中获取内容。

使用Hive从JSON字符串获取内容

Apache Hive对JSON文件提供了有限的支持。您可以将json数据以字符串作为数据类型存储到Hive表中。您可以使用第三方SerDe jars创建Hive表以导入JSON数据。

Hive get_json_object函数

如上所述,Apache Hive对json文件提供了有限的支持。但是你可以使用get_json_object函数从简单的json文件中获取值。

Hive get_json_object语法

以下是Hive中可用的get_json_object函数的语法。

get_json_object(jsonString, '$.key')

其中,jsonString是有效的json字符串。$ .key是您要提取的值的键。

例如,考虑以下简单示例,使用get_json_object函数从json字符串中提取名称。

注意,您可以使用Hive cli或beeline cli连接到Hive。

 select get_json_object(jvalue, '$.name') 
from  (select '{"name":"someName"}' as jvalue) as q;
OK
+-----------+--+
|    _c0    |
+-----------+--+
| someName  |
+-----------+--+
1 row selected (2.469 seconds)

从嵌套的JSON字符串中提取值
在前面的示例中,我们已经看到了如何从简单的json字符串中提取值。get_json_object函数提供了提取相当复杂的json字符串(例如嵌套json值)的选项。

例如,考虑以下示例从嵌套或嵌入式json对象提取“ pin”值。

select get_json_object(jvalue, '$.name.pin') 
from  (select '{"name":{"pin":"123456"}}' as jvalue) as q;
OK
+---------+--+
|   _c0   |
+---------+--+
| 123456  |
+---------+--+
1 row selected (0.22 seconds)

使用值列表从嵌套JSON中提取值
在json字段中包含值列表是很常见的。您可以使用get_json_object函数选项从以嵌套json格式存储的值列表中获取特定值。

例如,请考虑以下示例,从嵌套的json字符串列表中提取第二个值。

 select get_json_object(jvalue, '$.name.pin\[1]') 
from  (select '{"name":{"pin":["123456","654321"]}}' as jvalue) as q;
OK
+---------+--+
|   _c0   |
+---------+--+
| 654321  |
+---------+--+
1 row selected (0.087 seconds)

请注意,如果没有适当的匹配条件,get_json_object将返回NULL。

相关文章

微信公众号

最新文章

更多