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;
相关推荐
今心上1 小时前
关于json的理解测试!!
开发语言·json
强子感冒了1 天前
JSON和XML学习笔记
xml·学习·json
醒醒该学习了!2 天前
如何将json文件转成csv文件(python代码实操)
服务器·python·json
小邓睡不饱耶2 天前
Hadoop 3.x 企业级实战指南:从纠删码到云原生容器化
大数据·hadoop·云原生
数据知道2 天前
JSON 与 BSON 深度解析:理解 MongoDB 底层数据格式与扩展类型。
数据库·mongodb·json
XLYcmy3 天前
智能体大赛 实现逻辑 大容量数据预处理机制
ai·llm·json·prompt·api·检索·万方数据库
好学且牛逼的马3 天前
从“配置地狱“到“云原生时代“:Spring Boot 1.x到4.x演进全记录与核心知识点详解
hive·spring boot·云原生
Libraeking3 天前
02 深度剖析:MCP 协议底层的 JSON-RPC 机制与生命周期
网络协议·rpc·json
数据知道4 天前
PostgreSQL:详解 PostgreSQL 与Hadoop与Spark的集成
hadoop·postgresql·spark
数据知道4 天前
PostgreSQL:如何直接在数据库中查询 CSV/JSON文件?
数据库·postgresql·json