hive的分组取前n个值

比如说有两个班级,A班和B班

Class  score

A       10

A       7

A       9

B       5

B       6

B       3

所谓的开窗函数的开窗就是把所有的A和所有的B往两个地方进行处理,像是送到两个窗口进行处理。

 

Hadoop会把所有A和所有B两块数据进行处理,保证每块数据都在同一个reduce上面进行处理,为什么会这样呢,因为使用了分区函数partition by class

不过两块数据也可能在同一个reduce上面执行,也可能不会

这里的作用就是partition by这个函数做到的



合起来的一个字段就当作一个分区进行处理,然后对该分区的asso_access_num进行排序处理,然后每个分区进行排序后再合在起来,然后rownum进行依次的判断,

第一个是A则rownum=1

第二个是A则rownum=2

第三个是A则rownum=3

第四个是B,因为class变了,所以rownum又变为1,rownum=1

第五个是B则rownum=2,依次类推

如果你要得到前面两条的话,就写rownum<=2即可,那么rownum=3的这条数据就不会进行获取

可以参考:

http://msdn.microsoft.com/zh-cn/library/ms186734.aspx

http://www.cnblogs.com/85538649/archive/2011/08/13/2137277.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值