JSON 是以JavaScript对象表示法(JSON)存储的简单数据结构和对象的格式,该格式是标准的数据交换格式。Json主要用于Web应用程序间传输数据。许多Web应用程序都使用json在应用程序和服务器之间进行数据传输。在本文中,我们将如何使用Hive get_json_object函数从json字符串中获取内容。
Apache Hive对JSON文件提供了有限的支持。您可以将json数据以字符串作为数据类型存储到Hive表中。您可以使用第三方SerDe jars创建Hive表以导入JSON数据。
如上所述,Apache Hive对json文件提供了有限的支持。但是你可以使用get_json_object函数从简单的json文件中获取值。
以下是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。
内容来源于网络,如有侵权,请联系作者删除!