一文学会Hive解析Json数组

来源:园陌 五分钟学大数据 日期:2021-04-29

本文转载自微信公众号「五分钟学大数据」,作者园陌。转载本文请联系五分钟学大数据公众号。

在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析。接下来就聊聊Hive中是如何解析json数据的。

Hive自带的json解析函数

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
 1/10    1 2 3 4 5 下一页 尾页
    A+
声明:本文转载自其它媒体,转载目的在于传递更多信息,并不代表赞同其观点和对其真实性负责。