谁能告诉我如何从 hbase shell 命令行执行限定符过滤器或 ValueFilter ?
问问题
22151 次
3 回答
9
它与您使用任何编程语言进行编码的方式非常相似,例如:-
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.util.Bytes
scan 'tableName', {COLUMNS=>['CF:qualifier1', 'CF:qualifier2'], LIMIT=>10,
FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('CF'),
Bytes.toBytes('qualifier1'), CompareFilter::CompareOp.valueOf('EQUAL'),
Bytes.toBytes('value'))}
您显然必须根据您使用的拟合器更改参数。
于 2012-09-28T16:12:17.433 回答
7
您可以像在 Java 中一样(使用 JRuby 语法)实例化任何过滤器,并将过滤器提供为:
filter = ...
scan 'mytable', FILTER => filter
但是,直接在 shell 中实例化过滤器可能很麻烦,因此更简单的方法是使用过滤器语言将过滤器作为字符串提供。例如,要在扫描中包含值等于“myvalue”的所有列,您可以使用:
scan 'mytable', FILTER => "ValueFilter(=, 'binary:myvalue')"
您可以将此文档作为“过滤器语言”参考进行检查。
(编辑关闭双引号)
于 2013-05-12T15:27:48.870 回答
5
此外,要扫描特定列中的子字符串,您可以执行以下操作:
scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}
于 2015-05-27T09:32:13.403 回答