我可以在hbase的rowkey上使用singlecolumnvaluefilter吗?

k4aesqcs  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(355)

hbase版本:1.2.2(服务器和java api)

public SingleColumnValueFilter(byte[] family,
                               byte[] qualifier,
                               CompareFilter.CompareOp compareOp,
                               ByteArrayComparable comparator)

我正在使用 org.apache.hadoop.hbase.filter.RegexStringComparator 对rowkey执行like查询。
它可以很好地与列。
但是如果我使用rowkey而不是column,它会给我所有的记录。

1sbrub3j

1sbrub3j1#

columnvalue筛选器和rowfilters不同。
值过滤器对列值进行操作(可能是全表扫描),其中as行过滤器对rowkey进行操作。

SingleColumnValue筛选器:

此筛选器采用列族、限定符、比较运算符和比较器。如果找不到指定的列–将发出该行的所有列。如果找到该列并且与比较器的比较返回true,则将发出该行的所有列。如果条件失败,则不会发出该行。
此筛选器还接受另外两个可选的布尔参数—filterifcolumnmissing和setlatestversiononly
如果 filterIfColumnMissing 标志设置为 true 如果行中找不到要检查的指定列,则不会发出该行的列。默认值为 false .
如果 setLatestVersionOnly 标志设置为false,它也将测试以前的版本(时间戳)。默认值为true。
这些标志是可选的,如果必须同时设置或两者都不设置。
语法
singlecolumnvaluefilter(“”,“”,“”)

SingleColumnValueFilter(‘<family>’, ‘<qualifier>, <compare operator>, ‘<comparator>’)

例子:

hbase(main):020:0> scan 'airline' ,{ FILTER => "SingleColumnValueFilter('flightbetween','source',=, 'binary:Delhi')" }

如果要对rowkey执行“like”查询
您可以使用前缀过滤器/fuzzyrowfilter(更高级)
prefixfilter:这个过滤器使用一个参数作为行键的前缀。它只返回以指定行前缀开头的行中的键值

相关问题