IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 2021-07-22-hive高级用法 -> 正文阅读

[大数据]2021-07-22-hive高级用法

substr函数用法
1. SUBSTR(str,pos,len): 从pos开始的位置,截取len个字符
eg:
substr(string ,1,3) :取string左边第1位置起,3字长的字符串。
所以结果为: str
substr(string, -1,3):取string右边第1位置起,3字长的字符串。显然右边第一位置起往右不够3字长。结果只能是: g
substr(string, -3,3):取string右边第3位置起,3字长的字符串。
结果为: ing

2. SUBSTR(str,pos): pos开始的位置,一直截取到最后
eg:
substr(string ,4) : 从右第4位置截取到最后
结果是: ing
Hive内置date函数:date_add用法
date_add('yyyy-MM-dd',n/-m)
返回初试日期n天后、m天前的日期
date_add(start_date, num_days) - Returns the date that is num_days after start_date

eg:
hive> select date_add('2019-06-24',5);
2019-06-29
hive> select date_add('2019-06-24',-2);
2019-06-22
hive-NVL函数
NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
SQL> select ename,NVL(comm, -1) from emp;
SMITH -1
ALLEN 300
WARD 500
JONES -1
MARTIN 1400
BLAKE -1
FORD -1
MILLER -1
其中显示-1的本来的值全部都是空值的

Hive中rank()、row_number()函数的用法

row_number() 会根据顺序计算 row_number()仅仅是加了序号
eg
需求:计算每门学科成绩排名
分析:按照学科分组,再按照成绩排序,使用partition by subject order by score

hive (default)> select name,subject,score,row_number() 
> over(partition by subject order by score desc) as rank from score;
OK
name	subject	score	rank
孙悟空	数学	95	1
猪八戒	数学	86	2
沙僧	数学	85	3
唐僧	数学	56	4
猪八戒	英语	84	1
唐僧	英语	84	2
沙僧	英语	78	3
孙悟空	英语	68	4
唐僧	语文	94	1
孙悟空	语文	87	2
沙僧	语文	65	3

rank() 可以显示相同的数据,下一名的排序+1,即为跳跃排序
hive (default)> select name,subject,score,rank() 
> over(partition by subject order by score desc) as rank from score;
OK
name	subject	score	rank
孙悟空	数学	95	1
猪八戒	数学	86	2
沙僧	数学	85	3
唐僧	数学	56	4
猪八戒	英语	84	1
唐僧	英语	84	1
沙僧	英语	78	3
孙悟空	英语	68	4
唐僧	语文	94	1
孙悟空	语文	87	2
沙僧	语文	65	3
猪八戒	语文	64	4


dense_rank(),即使有相同的数据,也会按照连续排序
hive (default)> select name,subject,score,dense_rank() 
> over(partition by subject order by score desc) as rank from score;
OK
name	subject	score	rank
孙悟空	数学	95	1
猪八戒	数学	86	2
沙僧	数学	85	3
唐僧	数学	56	4
猪八戒	英语	84	1
唐僧	英语	84	1
沙僧	英语	78	2
孙悟空	英语	68	3
唐僧	语文	94	1
孙悟空	语文	87	2
沙僧	语文	65	3
猪八戒	语文	64	4
over()
ver() 函数在Hive中运用广泛,通常搭配row_number() ,min(),max(),sum()来使用,总结下over函数划定窗口的范围
id	name	num
1	a	1
2	b	3
3	a	5
4	c	9
5	b	3

SELECT id,name,num,sum(num) over() sum1 from aa

img

SELECT id,name,num, sum(num) over(order by id) sum1 from aa

img

SELECT id,name,num, sum(num) over(partition by name) sum1 from aa

img

Hive中collect相关的函数有collect_list和collect_set。

image

select username, collect_list(video_name) from t_visit_video group by username ;
按用户分组,取出每个用户每天看过的所有视频的名字

image

SELECT time 时间, sum(case when score= "90" then 1 else 0 end) as 胜,sum(case when result = "负" then 1 else 0 end) as 负 from Student GROUP BY time;
when score= “90” : 为判断条件,
then 1 selse 0 end: 当以上判断条件成立,则为1; 而该语句是在sum中的,具有累加效果,即可实现对所有成绩为90分的人进行一个统计
from
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:51:49  更:2021-07-23 10:52:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 16:37:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码