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 查询。
它可以很好地处理列。
但如果我使用行键而不是列,它会为我提供所有记录。
最佳答案
ColumnValue Filters and RowFilters are different.
Value Fileters operates on Column values(possibility of full table scan) where as RowFilters work on rowkey.
单列值过滤器:
此过滤器采用列族、限定符、比较运算符和比较器。如果未找到指定的列——将发出该行的所有列。如果找到该列并且与比较器的比较返回 true,则将发出该行的所有列。如果条件失败,则不会发出该行。
此过滤器还采用两个额外的可选 bool 参数——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')" }
如果要对rowkey进行“LIKE”查询
你可以使用 Prefix filter/FuzzyRowFilter(更高级)
前缀过滤器: 此过滤器将一个参数作为行键的前缀。它仅返回以指定行前缀开头的行中存在的那些键值
关于hadoop - 我可以在 HBase 的 rowkey 上使用 SingleColumnValueFilter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882758/