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;
相关推荐
ha_lydms8 小时前
MaxCompute中加密与解密函数
大数据·数据库·数据仓库·hadoop·dataworks·maxcompute·odps
波力海苔夹心脆6759 小时前
C# 序列化与反序列化详解:System.Text.Json、Newtonsoft.Json、XmlSerializer 用法、特性选项与安全实践
经验分享·后端·c#·json·.net
数据狐(Datafox)1 天前
淘宝商品详情API实战:多语言代购商城自动同步数据完整方案
开发语言·前端·数据库·爬虫·json
Q26433650231 天前
【有源码】基于Spark的电商客户细分与盈利洞察分析系统-面向精准营销的电商客户细分模型构建与盈利能力可视化研究
大数据·hadoop·分布式·数据挖掘·数据分析·spark·毕业设计
计算机源码社1 天前
【27届大数据毕设】基于Spark的AI艺术创作者价值评估与市场趋势预测研究 基于Python与Spark的AI生成艺术受众画像及异常热度识别可视化平台
大数据·人工智能·hadoop·python·spark·毕业设计·课程设计
ha_lydms2 天前
MaxCompute中窗口函数
大数据·hadoop·阿里云·云计算·dataworks·maxcompute·odps
千里码aicood2 天前
基于Hadoop的机票价格波动分析系统的设计与实现
大数据·hadoop·分布式
阿钱真强道2 天前
21 嵌入式操作系统 | JSON 与 json-c:生成与解析
c语言·开发语言·json·json-c
IT毕设梦工厂2 天前
计算机毕业设计选题推荐:基于大数据的供应链数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hive·hadoop·python·数据分析·spark·课程设计
BYSJMG2 天前
计算机毕业设计选题推荐|【基于深度学习的面部关键特征识别与检测】YOLO目标检测+ONNX推理
大数据·hadoop·数据分析·spark·课程设计