Hive(十八)--全局排序

不分发数据,使用单个reducer

复制代码
set mapred.reduce.tasks=1;

select * 
from dw.dw_app 
where 
dt>='2016-09-01' 
and dt <='2016-09-18' 
order by stime
limit 30000;
复制代码

 

包多一层,是用order by

复制代码
select t.* from 
(
select *
from dw.dw_app 
where 
dt>='2016-09-01' 
and dt <='2016-09-18' 
and app_id='16099'
and msgtype = 'role.recharge' 
) t
order by t.stime 
limit 5000;
复制代码

 

 

 

把所有具有相同的行最终都在一个reducer分区中,在在一个reducer中排序。 cluster by column=distribute by column+sort by colum

复制代码
select * 
from dw.dw_app 
where 
dt>='2016-09-01' 
and dt <='2016-09-18' 
and app_id='16099'
and msgtype = 'role.recharge' 
cluster by dt
limit 30000;
复制代码

 

查询每天前十名充值用户和充值总额

复制代码
select t3.*
  from (select t2.*
          from (select dt,
                       account_id,
                       sum(recharge_money) as total_money,
                       row_number() over(partition by dt order by sum(recharge_money) desc) rank
                  from (select dt, account_id, recharge_money
                          from dw.dw_app
                         where dt >= '2016-09-01'
                           and dt <= '2016-09-18'
                           and app_id = '16099'
                           and msgtype = 'role.recharge' 
                cluster by dt, account_id) t
                 group by dt, account_id) t2
         where t2.rank <= 10) t3
 order by t3.dt asc, rank asc limit 300;
复制代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值