阿飞 发表于 2014-9-4 15:48:02

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函数给表加了唯一标识之后,就可以利用第一个方法来进行分页。



EASONLIU 发表于 2014-12-17 09:07:39

逛逛。。。。

EASONLIU 发表于 2014-12-17 09:08:41

逛逛。。。。

wubaozhou 发表于 2015-1-1 17:56:17

{:soso_e181:}

feng01301218 发表于 2015-3-14 15:43:36

{:soso_e100:}

lzm 发表于 2016-12-8 16:16:43

排序字段不固定呢,有什么好办法,建临时表的方式好不现实呢,表的数据量也蛮大的。
页: [1]
查看完整版本: Hive实现分页的思路与方法