加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 大数据 > 正文

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

1. get_json_object

  • 语法:get_json_object(json_string, '$.key')
  • 说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。这个函数每次只能返回一个数据项。
  • 示例:

  1. select  
  2. get_json_object('{"name":"zhangsan","age":18}','$.name');  

结果:

name
zhangsan

如果既要解析name字段,也解析age字段,则可以这样写:


  1. select  
  2. get_json_object('{"name":"zhangsan","age":18}','$.name'), 
  3. 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。
  • 示例:

  1. select  
  2. b.name 
  3. ,b.age 
  4. from tableName a lateral view 
  5. json_tuple('{"name":"zhangsan","age":18}','name','age') b as name,age; 
  • 结果:
name age
zhangsan 18

注意:上面的json_tuple函数中没有$.

如果在使用json_tuple函数时加上$.就会解析失败:


  1. select  
  2. b.name 
  3. ,b.age 
  4. from tableName a lateral view 
  5. 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数组,这两个函数都无法处理。

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读