在hbase外壳上执行ValueFilter或ColumnFilter

在hbase外壳上执行ValueFilter或ColumnFilter,hbase,Hbase,有谁能告诉我如何从hbase shell命令行执行限定符筛选或ValueFilter吗?这与您使用任何编程语言编写代码的方式非常相似,例如:- import org.apache.hadoop.hbase.filter.CompareFilter import org.apache.hadoop.hbase.filter.SingleColumnValueFilter import org.apache.hadoop.hbase.util.Bytes scan 'tableName', {COL

有谁能告诉我如何从hbase shell命令行执行限定符筛选或ValueFilter吗?

这与您使用任何编程语言编写代码的方式非常相似,例如:-

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'))}

显然,您必须根据所使用的fiter更改参数。

您可以使用与Java相同的方式(使用JRuby语法)实例化任何筛选器,并提供如下筛选器:

filter = ...
scan 'mytable', FILTER => filter
但是,在shell中直接实例化过滤器可能会很麻烦,因此更简单的方法是使用过滤器语言将过滤器作为字符串提供。例如,要在扫描中包含值等于“myvalue”的所有列,您可以使用:

scan 'mytable', FILTER => "ValueFilter(=, 'binary:myvalue')"
您可以作为“筛选语言”引用进行检查


(编辑以关闭双引号)

此外,要扫描特定列中的子字符串,可以执行以下操作:

scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}