HBase筛选器:ColumnPrefixFIlter和SingleColumnValueFilter

HBase筛选器:ColumnPrefixFIlter和SingleColumnValueFilter,hbase,hbase-shell,Hbase,Hbase Shell,我有一张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 co

我有一张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
我需要获取行键,其中name是xyz,id是p1\u 03。尝试了下面的查询,但结果是两个行键

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

此处由于使用不同的柱族,因此请使用以下内容:

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

如果您只应用
SingleColumnValueFilter
?@BenWatson列名是自动递增的,这意味着,对于行键p1,我们可以有许多列名称\u 1、名称\u 2…名称\n,我不知道xyz在哪里。所以,我选择了ColumnPrifFilterm,我的观点是:每个过滤器都能独立完成您期望的功能吗?把你的问题分解成更小的问题,看看错误到底在哪里。