有没有一种方法可以检索给定范围内的行键,而无需实际检索与该行键关联的列/CF?
为了澄清:在我的示例中,表的行键是股票行情自动收录器名称(例如GOOG),在我们的Web应用程序中,我们只想使用数据库中的行键来填充自动完成小部件。显然,如果在用户键入“G”时检索G和H之间所有股票的所有数据(而不仅仅是股票名称),我们将不必要地使系统紧张。有任何想法吗?
最佳答案
根据官方文档,您可以使用两个过滤器(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
关于hbase - 获取范围内的HBase行键而不检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5668729/