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

Fox*_*chu 6 hbase

有没有办法检索给定范围内的行键而不实际检索与该行键关联的列/ CF?

为了澄清:在我的例子中,我们表格的行键是股票代码名称(例如GOOG),在我们的网络应用程序中,我们只想使用数据库中的行键来填充自动完成小部件.显然,如果我们在用户输入"G"时检索G和H之间所有股票的所有数据(而不仅仅是股票名称),我们将不必要地使我们的系统紧张.有任何想法吗?

div*_*poc 9

看看过滤器(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)构造函数.


小智 8

根据官方文档,您可以使用两个过滤器的组合来最佳地仅检索行键: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
Run Code Online (Sandbox Code Playgroud)

资料来源:https: //hbase.apache.org/book.html#perf.hbase.client.rowkeyonly


zoh*_*har 0

您可以使用 addFamily(byte[] family) 或 addFamily(byte[] family,byte[] qualifier) 来检索相关数据