【问题标题】:HIVE how to limit number of entries in groupHIVE如何限制组中的条目数
【发布时间】:2014-11-21 06:47:37
【问题描述】:

我这几天在学习 HIVE,遇到了一些问题……

我有一个名为 SAMPLE 的表:

USER_ID PRODUCT_ID NUMBER
1       3          20
1       4          30
1       2          25
1       6          50
1       5          40
2       1          10
2       3          15
2       2          40
2       5          30
2       3          35

如何使用 HIVE 按 user_id 对表进行分组,并在每个组中按 NUMBER 的 DESC 顺序对记录进行排序,并且在每个组中我最多保留 3 条记录。

我想要的结果是这样的:

USER_ID PRODUCT_ID NUMBER(optional column)
1       6          50
1       5          40
1       4          30
2       2          40
2       3          35
2       5          30

or

USER_ID PRODUCT_IDs 
1       [6,5,4]
2       [2,3,5] 

有人可以帮我吗? 非常感谢!!!!!!!!!!!!!!!!

【问题讨论】:

    标签: mysql hadoop hive


    【解决方案1】:

    试试这个,

    select user_id,product_id,number
    from(
    select user_id,product_id,number, ROW_NUMBER() over (Partition BY user_id) as RNUM
    from (
       select user_id, number,product_id
       from SAMPLE
       order by number desc
    ) t) t2
    where RNUM <=3 
    

    输出

    1   6   50
    1   5   40
    1   4   30
    2   2   40
    2   3   35
    2   5   30
    

    hive 版本应该是 0.11 或更高,请问你的版本是否更低

    【讨论】:

    • 感谢您的回答。你很聪明,解决方案很完美!再次感谢,我可以通过您的解决方案完成我的最终项目 :)
    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 2012-07-29
    • 2010-09-30
    • 2023-01-19
    • 2021-01-06
    • 2015-12-23
    • 2023-02-09
    • 1970-01-01
    相关资源
    最近更新 更多