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;