【问题标题】:Can I use SingleColumnValueFilter on rowkey in HBase?我可以在 HBase 的 rowkey 上使用 SingleColumnValueFilter 吗?
【发布时间】:2016-11-30 07:37:21
【问题描述】:

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 查询。

与列一起工作正常。

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

【问题讨论】:

  • 它的值过滤器(不是行过滤器)我只是想知道你是如何尝试行键的。 AFAIK,因为它不匹配,所以它全力以赴

标签: hadoop mapreduce hbase


【解决方案1】:

ColumnValue Filters 和 RowFilters 是不同的。

值过滤器对列值(全表扫描的可能性)进行操作,而行过滤器对行键进行操作。


单列值过滤器:

此过滤器采用列族、限定符、比较运算符和比较器。如果未找到指定的列——将发出该行的所有列。如果找到该列并且与比较器的比较返回 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(更高级)

前缀过滤器: 此过滤器采用一个参数作为行键的前缀。它仅返回以指定行前缀开头的行中存在的那些键值

【讨论】:

  • 感谢您的意见。有没有办法通过 RowFilter 对 rowkey 执行 LIKE 查询?
猜你喜欢
  • 2012-03-07
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多