求教对Hbase的scan方法的理解?

0
1、Hbase的scan方法是遍历整个表还是针对索引检索的?

2、表中有“索引的”概念吗?整个业务系统迁移到Hbase.关系型查询比较多,虽然表表结构已经设计好,但是按列族值进行查找检索的效率没有一个性能参考!

求教各位大神,帮忙看看了
已邀请:
1

Bob - 同程旅游大数据+BI 架构师 2015-11-24 回答

scan方法是有好几种场景的:
1.如果只是根据rowkey进行查询,速度是最高的。当然rowkey查询也支持几个模式:单个或多个rowkey固定查找,rowkey的startkey endkey查找,rowkey前缀查找等。
2.如果是只根据列进行查找,没有利用rowkey。那么效率非常低,执行全表扫描。包括列名称、列值等过滤
 
在实际的场景中,表的设计都是根据查询场景来确定的。一般是一个表服务于一个或类似的查询。这样就可以充分利用hbase 的rowkey扫描高效,来达到目的。
 
hbase集群本身没有所谓的索引。华为在这个方面贡献了一个二级索引的技术实现:https://github.com/Huawei-Hadoop/hindex
在实际生产环节中,也可以采用solrcloud或elasticsearch来实现hbase的索引:数据在写入hbase的同时,存储一份到索引中。用户在按范围过滤等条件是先查找索引,然后再根据rowkey来查hbase。

要回复问题请先登录注册