Dois-je utiliser prefixfilter ou rowkey analyse de plage dans HBase

Je ne sais pas pourquoi, c'est très lent si j'utilise prefixfilter à la requête. Quelqu'un peut m'expliquer quelle est la meilleure façon d'interroger HBase, merci.

hbase(main):002:0> scan 'userlib',{FILTER=>org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('0000115831F8'))}
ROW               COLUMN+CELL                                                                                                                                
0000115831F8001   column=track:aid, timestamp=1339121507633, value=aaa                                                                                       
1 row(s) in 41.0700 seconds

hbase(main):002:0> scan 'userlib',{STARTROW=>'0000115831F8',ENDROW=>'0000115831F9'}                                                                                        
ROW               COLUMN+CELL                                                                                                                                
0000115831F8001   column=track:aid, timestamp=1339121507633, value=aaa                                                                                       
1 row(s) in 0.1100 seconds
Le problème avec cette approche est que, si le dernier caractère est le maximum de la valeur d'un Octet, donc vous ne pouvez pas l'augmenter de 1. Si vous passez 0, puis augmenter de 1 de l'octet suivant, vous demandez HBase pour être inclusive de cette touche de fin qui n'est pas le résultat souhaité

OriginalL'auteur zhukunpeng | 2012-06-08