有没有办法检索给定范围内的行键而不实际检索与该行键关联的列/ 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)构造函数.
小智 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
| 归档时间: |
|
| 查看次数: |
6360 次 |
| 最近记录: |