Hive | json数据处理

文章目录

JSON格式的数据如下,JSON格式对引号要求比较高,如果key或者value是字符串类型的,只能使用双引号引起来。

json 复制代码
{"key":"value", "key":"value", "key":"value", "key":"value", ...}

每条数据都以JSON形式存在,每条数据中都包含4个字段,分别为设备名称【device】、设备类型【deviceType】、信号强度【signal】和信号发送时间【time】,现在需要将这四个字段解析出来,在Hive表中以每一列的形式存储,最终得到以下Hive表:

1.JSON函数:get_json_object

get_json_object函数用于解析json字符串,可以从json字符串中返回指定的某个对象列的值,每次只能返回json对象中一列的值。

powershell 复制代码
# 语法:
get_json_object(json_txt, path)

# 第一个参数json_txt:指定要解析的JSON字符串
# 第二个参数path:指定要返回的字段,通过$.columnName的方式来指定path
sql 复制代码
--创建表
create table tb_json_test1 (
  json string
);
--加载数据
load data local inpath '/export/data/device.json' into table tb_json_test1;

select * from tb_json_test1;
sql 复制代码
# 获取设备名称字段
select
       json,
       get_json_object(json,"$.device") as device
from tb_json_test1;
sql 复制代码
# 获取设备名称及信号强度字段
select
       --获取设备名称
       get_json_object(json,"$.device") as device,
       --获取设备信号强度
       get_json_object(json,"$.signal") as signal
from tb_json_test1;
sql 复制代码
select
       --获取设备名称
       get_json_object(json,"$.device") as device,
       --获取设备类型
       get_json_object(json,"$.deviceType") as deviceType,
       --获取设备信号强度
       get_json_object(json,"$.signal") as signal,
       --获取时间
       get_json_object(json,"$.time") as stime
from tb_json_test1;

2.JSON函数:json_tuple

json_tuple函数用于实现JSON字符串的解析,可以通过指定多个参数来解析JSON返回多列的值。功能类似于get_json_object,但是可以调用一次返回多列的值,属于UDTF类型函数,返回的每一列都是字符串类型,还可以搭配lateral view一起使用。

powershell 复制代码
# 语法:
json_tuple(jsonStr, p1, p2, ..., pn) 

第一个参数:指定要解析的JSON字符串
第二个参数:指定要返回的第1个字段
...
第N+1个参数:指定要返回的第N个字段
sql 复制代码
# 获取设备名称及信号强度字段
select
       --返回设备名称及信号强度
       json_tuple(json,"device","signal") as (device,signal)
from tb_json_test1;
sql 复制代码
select
       --解析所有字段
       json_tuple(json,"device","deviceType","signal","time") as (device,deviceType,signal,stime)
from tb_json_test1;
相关推荐
杀神lwz19 小时前
Java Json压缩工具类
java·json
fl17683121 小时前
智慧医疗X光牙齿疾病识别分割数据集labelme格式13887张31类别
json
ClouderaHadoop21 小时前
Oozie任务失败告警机制
hadoop·cdh·oozie
BUG_MeDe1 天前
json格式字符串解析的简单使用 libjson-c
c语言·开发语言·json
yatum_20141 天前
Hadoop 2.7.3 集群部署、配置与环境变量调优全流程总结
hadoop
..过云雨2 天前
【负载均衡oj项目】01. 项目概述及准备工作
linux·c++·html·json·负载均衡
yatum_20142 天前
Hadoop 三种核心运行模式(伪分布式/分布式/混合模式)全总结
hadoop·分布式·wpf
十月南城2 天前
实时数据平台的价值链——数据采集、加工、存储、查询与消费的协同效应与ROI评估
数据库·数据仓库·hive·hadoop·spark
乐hh2 天前
Hadoop 3.3.5 + Flink 1.15.3 集群完整部署手册(3节点标准版)
java·大数据·hadoop·hdfs·zookeeper·flink·yarn
好运yoo2 天前
在package.json中scripts这个配置的命令是什么意思
前端·webpack·json·vite·wepack