【问题标题】:How to list all row keys in an hbase table?如何列出 hbase 表中的所有行键?
【发布时间】:2011-07-11 00:38:21
【问题描述】:

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

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

【问题讨论】:

标签: rest hadoop hbase stargate


【解决方案1】:

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

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

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

【讨论】:

  • 嗨,大卫,感谢您的回复。我正在尝试使用 REST 接口,并找到了一些在限制范围内扫描表的方法。不幸的是,它无法正常工作,因为它应该在我的集群中。如果我回去搜索 Thrift,它会浪费我很多工作时间!如果你有什么好的工作方式来使用 REST 接口连接 hbase 和 php,请上来帮助我!
【解决方案2】:

我找到了办法..

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

邀请更好的建议..

【讨论】:

    【解决方案3】:

    我不知道 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/

    【讨论】:

      【解决方案4】:

      这...

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 2014-01-29
        • 1970-01-01
        • 1970-01-01
        • 2010-12-07
        相关资源
        最近更新 更多