`
kabike
  • 浏览: 596082 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

hbase中的分页

阅读更多
关系型数据库中用offset和limit分页很容易,但是在hbase中就不是一件容易的事.
首先看PageFilter,这个filter只是提供了limit的功能,没有offset,而且并不能保证最后取得的result数量不超过PageFilter中设定的值.因为scan在next操作跨越region时,要open一个新的scanner,而PageFilter是分别序列化到每个region上,就算scan第一个region时,region server对filter做了一些操作改变了filter的状态,在scan第二个region时,也不能保持filter的状态,而要使用全新的filter.因此PageFilter是对每个region中取出的result数量加以限制.
而且hbase不能指定filter的执行顺序,PageFilter与其他的filter配合使用,不知道会不会有问题.

既然hbase的offset只能使用StartRow来实现,一般hbase的分页都是通过StartRow和PageFilter来实现.比如hbase的分页不提供直接跳转到某页,只能从第一页开始进行下一页.每次把当前页的最后一条记录的rowkey+1当成下一页操作时的StartRow.或者像京东的专利那样,把每页对应的StartRow分别存储起来.
http://www.google.com/patents/CN103617232A?cl=zh&hl=zh-CN
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics