栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive、MySQL提取json字段信息

Hive、MySQL提取json字段信息

缘起:

今天看 HIVE 数据库中的jsource_json_result字段,该字段的数据类型为json格式,需要对该字段中的某些key提取value,故需要使用到函数get_json_object 。借此机会,顺便把MySQL数据库中对json的key提取也记录下。

前言:

先说下json数据格式的字段,其字段值是由许多键值对组合而成,比如:

征战:

1、在hive库中,获取json字段中某些key的值,记录如下:

查询source_json_result字段里resultA、resultB、otherResult这三个key的值

select 
get_json_object(source_json_result,'$.model.resultA') as aresult_report,  
get_json_object(source_json_result,'$.model.resultB') as bresult_report,
get_json_object(source_json_result,'$.model.otherResult') as other_report
from source_data
where MARK in ('high','strengh')
limit 10;

// *  从source_data表中查出MARK字段值为'high','strengh' 的前十条记录,将这些记录中source_json_result字段里key为resultA、resultB、otherResult的值展示出来,并分别取别名为aresult_report、bresult_report、other_report   *//   

-- 这里的“model”是用来指定该字段里具体的某个json

结果如下:

总结:

get_json_object(param1,"$.param2")

param1:需要提取/解析的json字段

param2:遇到字段里有多个数组就用 [0,1,2...] ,[0],[1],[2]是指定字段中第n+1个数组;遇到jsonObject直接用 ".key"取出想要获取的value。

补给:

如person_info表的xjson字段有数据:

         [{"name":"王二狗","sex":"男","age":"25"},{"name":"李狗嗨","sex":"男","age":"47"}]

取出第一个json对象,则hive sql为:

SELECt get_json_object(xjson,"$.[0]") FROM person;
    
结果是:
    
     {"name":"王二狗","sex":"男","age":"25"}

取出第一个json的age字段的值:

SELECt get_json_object(xjson,"$.[0].age") FROM person;
结果:25

再战:

1、在mysql库中,获取json字段中某些key的值,记录如下:

查询source_json_result字段里resultA、resultB、otherResult这三个key的值

select 
JSON_EXTRACT(source_json_result,"$.resultA"), 
JSON_EXTRACT(source_json_result,"$.resultB"),
JSON_EXTRACT(source_json_result,"$.otherResult") 
from source_data
where MARK in ('high','strengh')
limit 10;

结果:

由于此次记录时,数据都在Hive库里,若要执行该MySQL语句,需要刷数据到MySQL库里,耗时较长,所以这里就不放结果了。该语句在上次使用时已经验证过。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号