【问题标题】:HBase Filters: ColumnPrefixFIlter and SingleColumnValueFilterHBase 过滤器:ColumnPrefixFIlter 和 SingleColumnValueFilter
【发布时间】:2019-03-05 08:25:58
【问题描述】:

我有一个 HBase 表,伙计。我正在使用 ColumnPrefixFilter 和 SingleColumnValueFilter 从 HBase 表中获取详细信息

假设,我有如下条目-

ROW_KEY     COLUMN+CELL
p1          column='attr:id',value=p1_03
p1          column='details:name_1',value=xyz
p2          column='attr:id',value=p2_04
p2          column='details:name_2',value=xyz

我需要获取名称为 xyz 且 id 为 p1_03 的 row_key。尝试了以下查询,但结果是两个行键。

scan 'person', {FILTER=>"SingleColumnValueFilter('attr','id',=,'binary:p1_03') AND (ColumnPrefixFilter('name') AND ValueFilter(=,'xyz'))"}

输出:

ROW         COLUMN+CELL
p1          column='details:name_1',value=xyz
p2          column='details:name_2',value=xyz

我只需要获得一个行键p1

【问题讨论】:

  • 如果你只是申请SingleColumnValueFilter呢?
  • @BenWatson Column name 是自动递增的,这意味着对于 row_key p1 我们可以有许多列 name_1, name_2...name_n, I不知道 xyz 在哪里。所以,我选择了 ColumnPrefixFilter
  • 我的观点是:每个过滤器是否单独按照您的预期执行?把你的问题分解成更小的问题,看看错误到底出在哪里。

标签: hbase hbase-shell


【解决方案1】:

您可以将 SingleColumnValueFilter 与 AND/OR 条件一起使用。

由于您使用不同的列族,因此使用以下内容:

scan 'person', {FILTER=>"SingleColumnValueFilter('attr','id',=,'binary:p1_03') AND  SingleColumnValueFilter('details','name*',=,'binary:xyz')"}

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2019-03-22
    • 1970-01-01
    • 2013-09-12
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    相关资源
    最近更新 更多