我可以在 HBase 的 rowkey 上使用 SingleColumnValueFilter 吗?

Can I use SingleColumnValueFilter on rowkey in HBase?

HBase 版本:1.2.2 (服务器和 Java API)

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

我正在使用 org.apache.hadoop.hbase.filter.RegexStringComparator 对行键执行 LIKE 查询。

它与列一起工作正常。

但是如果我使用行键而不是列,它会为我提供所有记录。

ColumnValue Filters and RowFilters are different.

Value Fileters operates on Column values(possibility of full table scan) where as RowFilters work on rowkey.


单列值过滤器:

此过滤器采用列族、限定符、比较运算符和比较器。如果未找到指定的列——将发出该行的所有列。如果找到该列并且与比较器 returns 的比较为真,则将发出该行的所有列。如果条件失败,则不会发出该行。

此过滤器还采用两个额外的可选布尔参数 – filterIfColumnMissing 和 setLatestVersionOnly

如果 filterIfColumnMissing 标志设置为 true 如果在行中找不到要检查的指定列,则不会发出该行的列。默认值为 false.

如果 setLatestVersionOnly 标志设置为 false,它也会测试以前的版本(时间戳)。默认值为真。

这些标志是可选的,如果您必须不设置或两者都设置。

语法

SingleColumnValueFilter('','', , '', , )

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

示例:

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

如果要对行键

执行"LIKE"查询

您可以使用前缀 filter/FuzzyRowFilter(更高级)

前缀过滤器: 此过滤器将一个参数作为行键的前缀。它 returns 仅显示以指定行前缀

开头的行中的那些键值