Hive SQL

本文介绍了Hive SQL中的拼接、分割、聚合、窗口函数等操作,包括collect_set()、collect_list()、concat_ws()、split()、lateral view explode()等函数的使用。还讲解了如何优化SQL,如count(distinct)与group by的区别,以及窗口函数的应用,如RANK()、DENSE_RANK()等。此外,讨论了数据写入、类型转换和解决锁冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拼接函数(行转列):
collect_set():把多个值去重拼接成一个数组
collect_list():同上,不去重
concat_ws():用指定分隔符,把数组拼成一个字符串
–:concat_ws(分隔符,数组)
字符串拼接:
concat(v1,v2,v3)

分割函数(列转行):
split(字符串,分隔符):切割字符串
split(字符串,起始索引):字符串部分截取
lateral view explde(数组或者map):数组炸成多行

使用sort by 求topN
select * from gift sort by id limit 10

抽样固定条数
select * from gift sort by rand() limit 200

hive的count(distinct value)效率低于group by再sum(1) --:1代表行数
因为前者只在一个进程中跑,后者在分多个reduce跑

hive sql不支持union只有union all(非去重)

left semi join(左半开连接)
显示满足条件的左表内容,(右表不显示)
hive sql 对 in exists的优化

窗口函数:
特点:可以显示聚集前的数据

格式: 聚合函数 over(partition by 字句,order by字句,window字句)

常用分析函数:
RANK() :在分组中排名,相同排名时会留下空位;
DENSE_RANK() :在分组中排名,相同排名时不会留下空位;
FIRST_VALUE() :分组内排序取第一个值;
LAST_VALUE() :分组内排序取最后一个值;
NTILE(n) :将分组数据按顺序切分成n份,返回当前所在切片;
ROW_NUMGBER() :在分组中从1开始按序记录序列;
CUME_DIST() :小于等于当前值的行数 / 分组总行数(百分比);
PERCENT_RANK() :(分组内的R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值