SQL on HBase -- phoenix 之分页查询

        最近一个项目中使用了HBase,有一部分实时查询的需求。HBase本身只有一种排序,即按照rowkey的字典升序来排序数据。然而我们常常会碰到各种各样的排序需求。


        对于简单的需求(比如项目确定只有某一种特定排序的需求),则可以通过对rowkey本身进行“组合”设计来达到目的。比如项目涉及到的数据为全球各类学校学生情况,需要按照在校人数的降序来展示数据,则可以采用“Integer.MAX_VALUE - 在校人数 + 学校简称” 组成rowkey(注意保证整数部分占有相同字节数)。


        对于稍微复杂一点的需求,比如需要有分别按照某几列排序的功能,可以考虑对这几列建立二级索引表,索引表的rowkey为该列的每一个值,索引表只含一列,列值为对应的原数据的rowkey。当选择按照某一列进行排序时,首先读取索引表的内容,进而再根据索引表的列值再向原数据表发起查询,得到按照该列进行排序后的数据。关于建立二级索引表有很多的讨论,感兴趣的小伙伴可以自行去了解。


        第三种需求,就是我目前碰到的问题。项目有N张数据表,每张表都可以自定义查询条件,并可以按照每一列进行排序。这要是用SQL,简直就太开心啦,分分钟的事情。可是我面对的是HBase,而且我是个初学者,跟小白差不多,只熟练掌握了各种filter的使用,自定义查询条件的需求可以轻松搞定,但排序就哭了。听闻HBase的coprocessor功能强大,有网友提到可以用它来做排序,可能我太愚蠢,看来看去,就觉得coprocessor跟spring里的aop概念有一拼&#x

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值