有人可以告诉我如何从hbase shell命令行执行限定符过滤器或ValueFilter吗?
答案 0 :(得分:7)
它与您在任何编程语言中编码的方式非常相似,例如: -
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'))}
您显然必须根据您使用的工具更改参数。
答案 1 :(得分:7)
您可以像在Java中一样实例化任何过滤器(使用JRuby语法),并提供过滤器:
filter = ...
scan 'mytable', FILTER => filter
但是,直接在shell中实例化过滤器可能很麻烦,因此更简单的方法是使用Filter Language将过滤器作为字符串提供。例如,要在扫描中包含值等于'myvalue'的所有列,您将使用:
scan 'mytable', FILTER => "ValueFilter(=, 'binary:myvalue')
您可以将this document检查为“过滤语言”参考。
答案 2 :(得分:5)
此外,要扫描特定列以查找子字符串,您可以执行以下操作:
scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}