在这个hive表的类别和限制5中排序

Jin*_*Jin 0 sql hive nosql

我有一个hive表A,其中包含以下列

USER   ITEM    SCORE
U1      I1       S1
U1      I2       S2
...................
Run Code Online (Sandbox Code Playgroud)

我想要的是表格B这样的格式

USER    ITEMS    #ITEMS is an array
 U1     [I2,I3,...]   # items are sorted according to score in descending and limit 5
Run Code Online (Sandbox Code Playgroud)

对于用户少于5个项目,只需将项目按降序排列.

dim*_*mah 5

应该是这样的:

select USER,collect_set(ITEM) from (
    select USER, ITEM,row_number () over (partition by USER order by SCORE desc) RN 
    from A
) t1
where RN <= 5
group by USER;
Run Code Online (Sandbox Code Playgroud)