1. 程式人生 > >Hive實現分頁的方法

Hive實現分頁的方法

hive沒有像MySQL那樣的limit start,end那樣的寫法實現分頁,所以需要使用別的方式來實現分頁。
以下是我想到的兩種方式:

一、藉助唯一標識欄位

如果分頁的表有唯一標識的欄位,可以通過這個欄位來實現分頁:

  • 獲取第一頁資料:
    注:同時需要記錄這10條中最大的id為preId,作為下一頁的條件。
    select * from table order by id asc limit 10;
  • 獲取第二頁資料:
    注:同時儲存資料中最大的id替換preId。
    select * from table where id >preId order by id asc limit 10;

後續的頁數獲取同理。

二、使用row_number()函式

如果分頁的表沒有唯一標識的欄位,可以通過row number()函式來實現分頁。

  • 使用row_number()函式來給這個表做個遞增的唯一標識:
    select * from (select row_number() over (order by xx) as rnum ,table.* from table)t where rnum betwneen 1 to 10;