`
yunmanfan
  • 浏览: 93985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hbase分页查询

 
阅读更多

最近比较忙,隔了一段时间没有更新博客了。今天拿点时间来分享下关于hbase分页查询的实现思路,自己已经应用了该hbase分页查询。
从所周知,hbase通过scan来扫描表,通过startKey,stopKey来确定范围,hbase官方提供了一个PageFilter来支持一次scan可以返回多少条数据即每页的行数。假如一页是10条,这样是第一页还好,但是第二页呢,如果不改变PageFilter的pageSize,那返回的还是第一页的数据,如果改变pageSize为20,则返回了第一页10多余的数据,在客户端要过滤掉,性能不好。那怎么办呢,方法就是在查询下一页时,指定下一页的startKey,这样PageFilter每次就不会返回多余的记录,stopKey可以不用变,那现在问题是,怎么得到下一页的startKey(即下一页第一行的rowkey)呢?,有两种方法来取每一页的startKey

一  上一页的最后一行记录的rowkey作为下一页的startKey。
二   在每次scan时多取一条记录,即把下一页第一条行页取出来,把该行的rowkey做为下一页的startKey。

不管用一还是二,都要注意,hbase scan时是包含startKey的,如果是采用第一种,则要在记录多取一条,排除第一条。第二种页是多取一条,但是排除最后一条,用来做下一页的startKey。还有需要注意的是在计算是否有下一页时,可以根据返回的条数来判断。

startKey怎么取没有问题了。但是怎么存储呢,有同学可能会想到存到session,但是如果你的服务是rest api型的,就没有session的概念了。那还有两种选择:
一 是存到客户端,让客户端每次请求时把startKey再传回来,这样需要依赖客户端,如果客户端是远程,或者是开放平台的情况下,可能不合适。
二 存在服务端,存在服务端需要注意并发访问的情况。比如scan同一个表,一个访问第2页,一个访问第3页,服务端就需要对每一个table的scan 存每一页的startKey,需要为同一个查询条件包含pageSize,因为pageSize不一样,startKey也会不一样,
在服务crash情况下,从起后都从第一页开始。

我自己是采用第二种方案,存在服务端,需要代码的,可以给我留言,如果你有更好的方案的请分享出来。
注:hbase的分页一般只提供下一页,不提供直接最后一页,

由于网友的需要,现在把Hbase页面代码下载链接放上。

hbase分页源码

分享到:
评论

相关推荐

    hbase分页查询实现.pdf

    HBase分页查询实现 HBase作为一个NoSQL数据库,具有高性能、高可扩展性和高可靠性等特点,但是在查询方面却存在一些限制,例如不支持分页查询。这就使得开发者需要自己实现分页查询功能。本文将讲解如何使用Java...

    hbase分页查询实现[归类].pdf

    HBase分页查询实现 HBase是一种基于分布式的NoSQL数据库,它提供了高效的数据存储和检索能力。然而,HBase本身不支持分页查询,这使得开发者需要自己实现分页功能。本文将讲解如何使用Java语言实现HBase的分页查询...

    hbase查询分页分页

    在实际开发中,`hbase分页代码`通常会封装成一个工具类或者服务接口,以方便在应用程序中调用。这样的代码可能包括以下部分: - 查询方法,接受当前页数和每页大小作为参数,计算StartRow和StopRow,然后执行HBase的...

    hbase java api 访问 查询、分页

    本文将深入探讨如何使用HBase Java API进行数据访问和分页查询。 首先,我们要了解HBase的基本结构,它是由行(Row)、列族(Column Family)、列(Column)和时间戳(Timestamp)组成。在Java API中,我们主要通过...

    HBase分页查询的rowkey设计技巧

    用户历史订单列表查询rowkey设计技巧 最左前缀原则

    java操作Hbase之Hbase专用过滤器PageFilter的使用源代码

    总的来说,PageFilter是HBase中实现数据分页查询的一种有效手段,尤其适用于大数据量的场景,能有效提高系统性能,减少内存消耗。通过理解并熟练应用PageFilter,我们可以更好地管理和优化Java中的HBase操作。提供的...

    hbase 分页功能

    PageFilter是HBase提供的一个内置过滤器,专门用于实现分页查询。它允许用户在查询时设定每页的数据量,进而控制返回结果的规模。PageFilter的核心思想是限制结果集的大小,而不是精确地筛选出特定行或列。 **二、...

    hbase-page:hbase 分页

    在HBase这个分布式列式数据库中,分页查询是一个重要的功能,尤其对于处理大量数据时,它能够有效地提高性能并优化用户体验。HBase本身并不直接支持像SQL那样的传统分页,但通过一些策略和工具,我们可以实现类似的...

    HBaseUtils

    hbase分页查询实现 1.封装查询条件 2.封装每行数据 3.根据ROW KEY集合获取GET对象集合 4.封装配置的所有字段列族

    springboot-hbase:以简单的订单业务示例hbse的使用&redis设计hbase查询分页

    这样,我们就实现了基于Spring Boot和HBase的订单管理,同时利用Redis实现了数据的缓存和分页查询。通过这种方式,我们能够高效地处理大量订单数据,提升系统性能。在实际应用中,还可以根据业务需求对订单实体进行...

    MySqlToHbase数据分页导入到Hbase.zip

    项目中自己用的,弄了很久,需要把数据从各种数据源导入到,我们的原始数据库,原始数据库采用hbase,来存储所有数据,那么这里就用的nifi,从其他数据源获取数据以后,然后导入到Hbase中去,这个是设计好的流程模板. ...

    基于Spring Boot和HBase的HBase客户端应用.zip

    - **分页查询**:提供高效的分页查询功能,支持大数据集的逐页加载。 - **异常处理**:全局异常处理机制,确保应用的健壮性和错误信息的统一管理。 - **跨域资源共享(CORS)**:配置CORS策略,支持前后端分离架构中...

    hbase一些查询

    - **PageFilter**:实现分页查询,限制返回结果的数量。 - **KeyOnlyFilter**:仅返回行键,忽略所有列数据。 - **FirstKeyOnlyFilter**:仅返回每行的第一个键。 - **TimestampsFilter**:根据时间戳过滤数据。 - *...

    hbase 表设计

    HBase还提供了过滤器来优化查询,例如单列值过滤器、列前缀过滤器、分页过滤器等,这些过滤器可以在服务器端执行,从而减少了不必要的数据传输。 压缩是HBase表设计时的另一个重要考虑因素。通过压缩可以减少存储...

    NIFI模板PostGreSqlToHbaseByPhoenix-数据从PostGresql实时同步到Hbase-带分页.zip

    NIFI模板PostGreSqlToHbaseByPhoenix-数据从PostGresql实时同步到Hbase-带分页.zip NIFI大数据处理模板,导入以后可以直接将数据从postgresql从通过phoenix拉取到Hbase中去,注意这里,需要自己配置一下phoenix连接...

    HBaseClient:HBase客户端数据管理软件

    数据查询结果的分页显示操作,并且对查询关键字高亮显示; 导出 表结构的导出; 表结构及数据的导出; 导入 文件批量put命令导入(支持中文) 批量put命令执行(支持中文) 非可视化界面的命令操作 HBase命令的执行 导入...

    hbase参考文档

    7. 分页查询:通过设置Scan对象的startRow和stopRow实现分页。 8. 行限制:设置Scan对象的maxVersions属性控制返回的数据版本数量。 五、HBase优化 优化HBase涉及到多个层面,如: 1. 表设计:合理规划列族和行键,...

Global site tag (gtag.js) - Google Analytics