Выберите первую строку в каждом разделе таблицы Hive - PullRequest
0 голосов
/ 20 октября 2018

Я хотел бы получить первые 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).

...