HBase筛选器:ColumnPrefixFIlter和SingleColumnValueFilter
我有一张HBase表,伙计。我使用ColumnPrefixFilter和SingleColumnValueFilter从HBase表中获取详细信息 假设我有如下条目-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
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,我的观点是:每个过滤器都能独立完成您期望的功能吗?把你的问题分解成更小的问题,看看错误到底在哪里。