【问题标题】:Is there any way to limit the number of columns in Hbase有没有办法限制Hbase中的列数
【发布时间】:2017-06-29 23:51:17
【问题描述】:

有没有办法限制Hbase中特定行下的列数?我已经看到了限制行的方法。我想知道是否有任何方法可以限制列族值

喜欢,

行      columnfamily(page)      值
1          页面:1                        1
1          页面:2                        2
1          页面:3                        3

我需要检索列族 page:1 和 page:2 的 row1 值
可能吗?

【问题讨论】:

    标签: hadoop hbase schema


    【解决方案1】:

    有许多不同的方法可以解决这个问题。基本上,您需要一个服务器端过滤器来限制 Get/Scan 中的返回数据。通常,这将使用协处理器来完成,但这仍在开发中,因此您确实希望将过滤器应用于您的查询。

    过滤器示例:http://svn.apache.org/repos/asf/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/filter/

    最简单的例子是前缀过滤器(虽然看起来你想要某种范围过滤器)。只是为了让您大致了解它的工作原理,以下是您如何将 PrefixFilter 应用于 Get:

    HTable myTable; // predefined
    Scan scan; // predefined
    scan.setFilter(new ColumnPrefixFilter(Bytes.toBytes("myprefix")));
    return myTable.getScanner(scan);
    

    【讨论】:

      【解决方案2】:

      这是可能的。

      扫描时使用http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#addColumn(byte[], byte[])

      获取时使用 http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Get.html#addColumn(byte[], byte[])

      如果列键是可预测的,例如,键是索引,则可以根据特定值通过迭代添加键。此外,如果条件可能是随机且复杂的,例如 > 1 和 this。有许多预先实现的filters。您可能会对qualifier filter 感兴趣。

      希望这会有所帮助。

      【讨论】:

      • 您好优素福,感谢您的回复。我是 hbase 的新手。如果可能的话,你能详细说明一下答案吗?我不能根据时间范围应用限制。我需要根据值进行限制,例如值
      • 嗨!试图澄清一点。如果仍然模棱两可,请说明一个特定的用例,我会尝试在该行中回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 2015-09-17
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多