hbase组合rowkey和partial key scan

partial key scan并没有反应其特点,应该叫prefix key scan更好些,也就是说必须作为前缀才有意义,若是中间的key,就不行了。

比如rowkey形式为<key1>-<key2>-<key3>

以key2或key3无法做partial scan。


对于该问题几种解决办法:

1)冗余。建另外一张表,以要查询的子key比如key2放在组合rowkey开始位置。

2)利用某子key数据少的特点。比如若key3数据较少,可以将其放在rowkey开始位置:<key3>-<key2>-<key1>,若有对key2的查询,可以枚举key3来依次构造key3-key2前缀进行partial scan。

参见http://stackoverflow.com/questions/12908378/hbase-searching-by-part-of-a-key

3)fuzzy row filter。

可以构建通配符形式的中间子key的scan。(但匹配key必须为固定长度)

本质上还是full scan,但是由于略过一部分数据,scan性能提到提升。---能提升多少取决于能略过多少数据,若要过滤key的集合很大对应row很多,基本上没法略过,要一一匹配,就没太大意义了。

参见http://blog.sematext.com/2012/08/09/consider-using-fuzzyrowfilter-when-in-need-for-secondary-indexes-in-hbase/

Performance of the scan based on Fuzz

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值