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;
相关推荐
WL_Aurora4 分钟前
Hadoop 通过 Web 界面上传文件到 HDFS 失败解决方案
hadoop·hdfs
lifewange37 分钟前
CNode API v1 完整接口文档(JSON 规范整理)
java·前端·json
测试修炼手册9 小时前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
九转成圣10 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
小袁拒绝摆烂13 小时前
多表关联大平层转JSON树形结构
java·json
ClouderaHadoop18 小时前
CDH 最隐蔽的坑:NTP 时间同步导致的 5 类故障
hadoop·hbase·kerberos·cloudera·cdh
学术阿凡提18 小时前
Spring Boot 集成 Fastjson2 完整教程:从入门到避坑
spring boot·安全·json
LIUAWEIO18 小时前
鸽鸽工具网:免费在线工具大全,打开网页即用
人工智能·安全·ai·json
Gent_倪18 小时前
Hadoop生态组件介绍
大数据·hadoop
YaBingSec21 小时前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全