Hive-排序与窗口函数

排序

order by:全局排序,一个reducer

  • 默认升序ASC
  • 可以按别名/多个列排序

sort by:每个reducer内部排序, 随机/均匀地分给多个reducers,防止数据倾斜

set mapreduce.job.reduces= ;

distribute by: 分区排序,分配多个reducer进行处理(结合sort by使用,写在sort by之前,意为先分区再排序)

      distribute by 和 sort by 字段相同时可以使用cluster by,但此时排序只能是升序

distribute by ... sort by ...

窗口函数

over() 对每条数据都开了一个独立的窗口,括号内为窗口数据集大小

按日期累加:

select date, cost, sum(cost) over(order by date)
from

排序函数:

rank() / dense_rank() / row_number()

row_number() over(partition by p_date, device_id, session_id order by client_timestamp asc) 

  partition by ... order by ... 等价于 distribute by ... sort by ...

notes

partition by: 建表语句有ed,查询语句无ed

row_number(): 1234 / rank(): 1224 / desc_rank: 1223

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值