2

如何列出 hbase 表中的所有行键?

我需要使用带有 REST 接口的 PHP 来执行此操作。

4

4 回答 4

5

如果您列出 HBase 表中的所有键,那么您使用了错误的工具。HBase 适用于无法列出所有键的大型数据系统。

更明智的做法是从给定键开始并列出接下来的 N 个键(对于 N 小于 10K 的值)。有很好的 Java 接口可以通过扫描来完成这类事情——设置开始键和/或结束键。

大多数 HBase 功能都是通过 Thrift 接口公开的。我建议看那里

于 2011-03-09T16:17:17.183 回答
4

我不知道 REST 接口是什么样的,但您可能希望从客户端过滤掉一些数据以避免大型 RPC 响应。您可以通过在扫描中添加服务器端过滤器来做到这一点:

Scan s = new Scan();
FilterList fl = new FilterList();
// returns first instance of a row, then skip to next row
fl.addFilter(new FirstKeyOnlyFilter());
// only return the Key, don't return the value
fl.addFilter(new KeyOnlyFilter());
s.setFilter(fl);

HTable myTable;
ResultScanner rs = myTable.getScanner(s);
Result row = rs.next();
while (row != null) ...

http://svn.apache.org/repos/asf/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/filter/

于 2011-03-16T22:33:21.963 回答
4

我找到了一个方法..

http://localhost:8080/tablename/ * 将返回一个 xml 数据,我可以对其进行预匹配以获取行。

邀请更好的建议..

于 2011-03-09T06:55:14.617 回答
3

这个...

http://localhost:8080/tablename/*/columnfamily:columnid 

...将返回表中相对于该表中该列的所有值,有点像在扫描仪中应用列过滤器。

此外,如果您要查找多个列 - 用逗号分隔它们。

所以: /tablename/*/columnfamily:columnid,columnfamily:columnid2

于 2011-11-26T01:58:27.987 回答