获取范围内的HBase行键而不检索数据?

| 有没有一种方法可以检索给定范围内的行键,而无需实际检索与该行键关联的列/ CF? 为了澄清起见:在我的示例中,表格的行键是股票行情自动收录器名称(例如GOOG),在我们的网络应用中,我们希望仅使用数据库中的行键填充自动完成小部件。显然,如果在用户键入“ G”时检索G和H之间所有股票的所有数据(而不是仅股票名称),我们将不必要地使系统紧张。有任何想法吗?     
已邀请:
看一下过滤器(http://hbase.apache.org/book/client.filter.html),尤其是KeyOnlyFilter。过滤器的说明(通过http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/package-summary.html)是   仅返回每个KV关键部分的过滤器(该值将被重写为空)。 为了将键限制在特定范围内,请使用Scan(rowStart,rowEnd)构造函数。     
根据官方文档,您可以使用两个过滤器(KeyOnlyFilter和FirstKeyOnlyFilter)的组合来最佳地仅检索行键。 (我认为\“ FirstKeyOnlyFilter \”将只返回键一次,即使具有较大的复杂行也是如此。)如果只希望键在给定范围内,则可以将该范围添加到扫描仪中。 这是一些示例代码:
FilterList filters = new FilterList(FilterList.Operator.MUST_PASS_ALL,
            new FirstKeyOnlyFilter(),
            new KeyOnlyFilter());
Scan s = new Scan(filters);
// in order to limit the scan to a range
s.setStartRow(startRowKey);  // first key in range
s.setStopRow(stopRowKey);    // key value after the last key in the range
资源: https://hbase.apache.org/book.html#perf.hbase.client.rowkeyonly     
我将创建一个名为\'empty:\'的列族,并为所有行存储空值。现在,您只需请求加载列'empty:\'。这不是理想的方法,但是比加载具有大量数据的列族更好。     
您可以使用addFamily(byte []家族)或addFamily(byte []家族,byte []限定符)仅检索相关数据     
一种方法是维护另一个索引表,该表将具有所有股票所有可能的FSA状态的键。因此,下一次每当用户键入\'G \'时,您要做的就是点击该表,并且检索到的可能是与G相关的所有值的逗号分隔列表。     

要回复问题请先登录注册