Hive自带的json分析函数
发布时间:2021-05-15 14:29:03 所属栏目:大数据 来源:互联网
导读:1. get_json_object 语法:get_json_object(json_string, $.key) 说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。这个函数每次只能返回一个数据项。 示例: select get_json_object( {name:zhangsan,age:1
|
|
| name |
|---|
| zhangsan |
如果既要解析name字段,也解析age字段,则可以这样写:
- select
- get_json_object('{"name":"zhangsan","age":18}','$.name'),
- get_json_object('{"name":"zhangsan","age":18}','$.age');
但是如果要解析的字段有很多,再这样写就太麻烦了,所以就有了 json_tuple 这个函数。
2. json_tuple
- 语法:json_tuple(json_string, k1, k2 ...)
- 说明:解析json的字符串json_string,可指定多个json数据中的key,返回对应的value。如果输入的json字符串无效,那么返回NULL。
- 示例:
- select
- b.name
- ,b.age
- from tableName a lateral view
- json_tuple('{"name":"zhangsan","age":18}','name','age') b as name,age;
- 结果:
| name | age |
|---|---|
| zhangsan | 18 |
注意:上面的json_tuple函数中没有$.
如果在使用json_tuple函数时加上$.就会解析失败:
- select
- b.name
- ,b.age
- from tableName a lateral view
- json_tuple('{"name":"zhangsan","age":18}','$.name','$.age') b as name,age;
结果:
| name | age |
|---|---|
| NULL | NULL |
字段全是NULL,所以json_tuple函数不需要加$.了,否则会解析不到。
总结:json_tuple相当于get_json_object的优势就是一次可以解析多个json字段。但是如果我们有个json数组,这两个函数都无法处理。
(编辑:我爱故事小小网_铜陵站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!



浙公网安备 33038102330570号