Hive实现分页的思路与方法
问题导读:1.hive是通过什么函数来分页的?
2.本文hive分页的方法是什么?
static/image/hrline/1.gif
hive没有像MySQL那样的limit start,end那样的写法实现分页,所以需要使用别的方式来实现分页。
如果分页的表有唯一标识的字段
可以通过这个字段来实现分页:
获取第一页数据:
select* from table order by id asc limit 10;//同时需要记录这10条中最大的id为preId,作为下一页的条件。
获取第二页数据:
select * from table where id >preId order by id asc limit 10;//同时保存数据中最大的id替换preId。
如果分页的表没有唯一标识的字段
可以通过row number()函数来实现分页:
首先使用row number()函数来给这个表做个递增的唯一标识:
create table newtable as select row number(1)as id ,* from table;
通过row number函数给表加了唯一标识之后,就可以利用第一个方法来进行分页。
逛逛。。。。 逛逛。。。。 {:soso_e181:} {:soso_e100:} 排序字段不固定呢,有什么好办法,建临时表的方式好不现实呢,表的数据量也蛮大的。
页:
[1]