HBase:返回的记录中不存在字段

HBase:返回的记录中不存在字段,hbase,hbase-shell,Hbase,Hbase Shell,我在HBase中有一个person表,如下所示- ROW_KEY COLUMN+CELL dinesh column='details:code',value=dr-01 dinesh column='status:is_error',value=false dinesh column='time:date_created',value=1553747864740 dinesh column='time:last_updated',value=15

我在HBase中有一个person表,如下所示-

ROW_KEY     COLUMN+CELL
dinesh      column='details:code',value=dr-01
dinesh      column='status:is_error',value=false
dinesh      column='time:date_created',value=1553747864740
dinesh      column='time:last_updated',value=1553747864740
alex        column='details:code',value=al-01
alex        column='time:date_created',value=1553747786521
alex        column='time:last_updated',value=1553747786521
我只想获取is_error字段为false的记录。此属性仅在某些行中存在。我试图使用SingleColumnValueFilter获取它,但它提供了所有记录

查询:

scan 'person', {FILTER=>"SingleColumnValueFilter('status','is_error',=,'binary:false')"}    
ROW_KEY     COLUMN+CELL
dinesh      column='details:code',value=dr-01
dinesh      column='status:is_error',value=false
dinesh      column='time:date_created',value=1553747864740
dinesh      column='time:last_updated',value=1553747864740
alex        column='details:code',value=al-01
alex        column='time:date_created',value=1553747786521
alex        column='time:last_updated',value=1553747786521
输出:

scan 'person', {FILTER=>"SingleColumnValueFilter('status','is_error',=,'binary:false')"}    
ROW_KEY     COLUMN+CELL
dinesh      column='details:code',value=dr-01
dinesh      column='status:is_error',value=false
dinesh      column='time:date_created',value=1553747864740
dinesh      column='time:last_updated',value=1553747864740
alex        column='details:code',value=al-01
alex        column='time:date_created',value=1553747786521
alex        column='time:last_updated',value=1553747786521
预期的输出应该只有一行与给定条件匹配,但它返回两行,其中不存在is_error字段。

您的筛选器需要使用:

protected SingleColumnValueFilter(byte[] family,
                                  byte[] qualifier,
                                  CompareOperator op,
                                  ByteArrayComparable comparator,
                                  boolean filterIfMissing,
                                  boolean latestVersionOnly)
filterIfMissing
将确保不返回不包含列的行。我不知道为什么这不是默认行为

您的扫描应该是:

scan 'person', {FILTER=>"SingleColumnValueFilter('status','is_error', =, 'binary:false', true, true)"}