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

时间:2011-03-08 10:50:32

标签: rest hadoop hbase stargate

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

我需要使用带有REST接口的PHP来做到这一点。

4 个答案:

答案 0 :(得分:5)

如果要列出HBase表中的所有键,那么您使用的是错误的工具。 HBase适用于大型数据系统,列出所有密钥是不切实际的。

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

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

答案 1 :(得分:4)

我找到了一种方法..

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

邀请更好的建议..

答案 2 :(得分: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/

答案 3 :(得分:3)

此...

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

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

另外,如果您要查找多个列 - 请用逗号分隔。

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