如何列出hbase表中的所有行键?
我需要使用带有REST接口的PHP来做到这一点。
答案 0 :(得分:5)
如果要列出HBase表中的所有键,那么您使用的是错误的工具。 HBase适用于大型数据系统,列出所有密钥是不切实际的。
更明智的是从给定键开始并列出下一个N键(对于小于10K的N值)。有一些很好的Java接口可以通过扫描来完成这种类型的操作 - 设置开始键和/或结束键。
大多数HBase功能都是通过Thrift接口公开的。我建议看那里
答案 1 :(得分:4)
答案 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