在Hive表的每个分区中选择第一行

时间:2018-10-20 16:49:46

标签: hive hiveql greatest-n-per-group hive-query

我想从配置单元分区表的每个分区中获取前N条记录,而不必对表中的每个记录进行反序列化。我已经看到了许多其他数据库的解决方案,但是没有一种解决方案可以在Hive中运行而不会运行每条记录。

一个最小的例子:

create table demo ( val int ) 
    partitioned by (partid int);
insert into demo partition (partid=1) 
    select stack(5, 1, 2, 3, 4, 5);
insert into demo partition (partid=2) 
    select stack(5, 100, 200, 300, 400, 500)
insert into demo partition (partid=3) 
    select stack(5, -1, -2, -3, -4, -5)
insert into demo ...
    ...

我想得到

的结果
select * from partition_demo where partid = 1 limit 1
union all
select * from partition_demo where partid = 2 limit 1
union all
select * from partition_demo where partid = 3 limit 1
union all
...

无需编写每个子句,,而无需反序列化每个分区中的所有数据(这似乎发生在使用RANK OVER的情况下)。

0 个答案:

没有答案