首页 > 其他分享 >Hive(六)JSON函数

Hive(六)JSON函数

时间:2024-10-09 16:32:37浏览次数:7  
标签:interests string json Hive name JSON 数组 函数

概念

什么是JSON

  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成
  • JSON是存储和交换文本信息的语法,类似XML
  • JSON比XML更小、更快,更易解析

JSON语法

  • 数据在名称/值对中
  • 数据由,分开
  • 使用斜杠\来转义字符
  • 大括号{}保存对象
  • 中括号[]保存数组,数组可以包含多个对象

结构

  • 对象:大括号保存的对象是一个无序的名称/值对集合,一个对象以左括号开始,右括号结束,每个键后跟一个冒号,名称/值对使用逗号分隔
  • 数组:中括号[]保存的数组是值(value)的有序集合,一个数组以左中括号开始,右中括号结束,值之间使用逗号分隔

JSON函数

函数 说明 示例
get_json_object(json_string, ‘$.key’) 用于提取JSON字符串中的特定字段 获取json字符串中的name字段,get_json_object('{"name":"John","age":30}', '$.name')
json_tuple(json_string, k1, k2 …) 可以在一次函数调用中提取多个字段 获取json字符串中的name,age字段,get_json_object('{"name":"John","age":30}', 'name', 'age')

explode函数

  • 语法:explode(Array OR Map)
  • 说明:接收一个array或者map类型的数据作为输入,然后将array或map里面的元素按照每行的形式输出,也被称为列转行函数,通常与LATERAL VIEW一起使用,用于将一个数组或嵌套的JSON数组展开成多行
  • 实例:包含JSON数组的表users
{
  "name": "John Doe",
  "interests": ["Reading", "Hiking", "Cooking"]
}
{
  "name": "Jane Smith",
  "interests": ["Running", "Swimming"]
}

展开interests数组,并将每个兴趣爱好作为单独的行

SELECT name, interest
FROM users
LATERAL VIEW explode(interests) t AS interest;
  • LATERAL VIEW: 这个关键字用于将explode函数的结果与原始表users进行连接,以便每行的interests数组展开成多行
  • explode(interests): 这个函数将interests数组展开,每个元素成为一行
  • t AS interest: 这是LATERAL VIEW的别名定义,t是一个临时表,interest是展开后的列名
name        | interest
------------+---------
John Doe    | Reading
John Doe    | Hiking
John Doe    | Cooking
Jane Smith  | Running
Jane Smith  | Swimming

regexp_replace函数

  • 语法:regexp_replace(string A, string B, string C)
  • 说明:将字符串A中的符合java正则表达式B的部分替换为C,注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数
--将,替换为;
select regexp_replace('{"user_name":"chimchim","age":30,"sex":"woman"}', ',', ';');

JsonSerDe

  • 从Hive 3.0.0开始,Hive内置了JsonSerDe,可以直接处理JSON文件,无需手动解析每个字段,在创建表时指定JsonSerDe序列化器,并在HDFS上存放JSON文件,就可以直接查询字段内容
create table tb_json_test2 (
	device string,
	deviceType string,
	signal double,
	time string
)
row format serde 'org.apache.hive.hcatalog.data.JsonSerDe'
stored as textfile;

load data local inpath '/root/hivedata/device.json' into table tb_json_test2;

select * from tb_json_test2;

标签:interests,string,json,Hive,name,JSON,数组,函数
From: https://www.cnblogs.com/shihongpin/p/18454427

相关文章

  • java Gzip将json压缩成byte数组
    `importorg.apache.commons.lang3.StringUtils;importjava.io.*;importjava.nio.charset.StandardCharsets;importjava.util.Arrays;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream;publicclassTestController{publicsta......
  • Hive(五)常用函数
    Hive常用函数字符串函数返回值函数描述stringconcat(string/binaryA,string/binaryB…)对二进制字节码或字符串按次序进行拼接intinstr(stringstr,stringsubstr)查找字符串str中子字符串substr出现的位置intlength(stringA)返回字符串的长度int......
  • C语言—函数递归
    目录一.递归的概念①递归的思想②递归的限制条件二.递归的一些典型例子①求n的阶乘②顺序打印一个整数的每一位③斐波那契数列三.递归与迭代一.递归的概念①递归的思想所谓递归,就是把一个大型复杂问题不断转化成一个个规模较小的子问题从而求解,直到子问题不能被......
  • tanh激活函数
    公式tanh⁡(x)=sinh⁡(x)cosh⁡(x)=ex−e−xex+e−x图像:tanh函数的输出范围是(-1,1),这意味着无论输入是什么,输出都会被压缩到这个区间内。主要的点是非线性和助于解决梯度爆炸......
  • PTA JAVA语言 面向对象程序设计 作业二 6-3 Person类 构造Person类。包括姓名(name),性
    6-3Person类 谢谢大佬关注,不定期分享学习笔记,希望大佬能多多支持,三连必回单位 山东科技大学构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息输入描述:姓名(name),性别(sex)和年龄(age)输出描述:用户信息裁判测......
  • [快速阅读八] HDR->LDR:Matlab中tonemapfarbman函数的解析和自我实现。
    最近受朋友的委托,想自己实现Matlab里的一个HDR转LDR的函数,函数名是tonemapfarbman,乘着十一假期,稍微浏览下这个函数,并做了一点C++的实现和优化。为了看到这个函数的效果,需要至少matlab R2018b及其以上的版本。 首先,我们下载了matlab帮助文档中提到的该算法对应的论......
  • 五行强度得分_喜用神api免费接口_json数据八字五行强弱接口
    本API接口基于深厚的八字学原理,为用户提供详尽的五行(金、木、水、火、土)强弱分析、五行打分评估,以及精准的喜用神判断。用户只需输入自己的八字信息,即可获得全面而深入的命理解读。‌一、核心功能‌‌五行强弱分析‌:依据用户八字,精准分析五行在命盘中的分布与强弱状态。揭示五......
  • Impala函数语法
    Impala常用函数语法Impala是基于Hadoop的一种高性能分布式SQL查询引擎,它支持使用SQL语言对大规模数据进行分析和查询数学函数函数说明举例ABS(x)绝对值函数,返回一个数的绝对值SELECTABS(-10)ASresult;CEIL(x)向上取整函数,返回大于等于给定数的最小整数SE......
  • 基于springboot的Hive的网络电视剧收视率分析系统
    本网络电视剧收视率分析系统依托Java与SpringBoot技术,并结合Hive数据仓库,致力于为电视剧行业提供精准、全面的收视率分析服务。在系统设计上,充分考虑数据的海量性和复杂性。Java语言确保了系统各个模块的稳定运行和高效执行。SpringBoot框架则为系统提供了便捷......
  • C#中函数重载的说明
    一.函数重载的基本概念C#中的函数重载是指在同一个类中定义多个同名的函数,但这些函数的参数类型、参数个数、参数顺序等不同,以便适应不同的调用需求,增加代码的兼容性。二.函数重载的作用2.1定义多个相类似的函数,减少函数的数量,避免命名空间的相互干扰导致的误解;2.2提升程......