在hbase shell上执行ValueFilter或ColumnFilter

use*_*730 3 hbase

有谁能告诉我如何从hbase shell命令行执行限定符过滤器或ValueFilter?

sul*_*bhc 8

它与您在任何编程语言中编码的方式非常相似,例如: -

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'))}
Run Code Online (Sandbox Code Playgroud)

您显然必须根据您使用的工具更改参数.


kir*_*ich 7

您可以像在Java中一样实例化任何过滤器(使用JRuby语法),并提供过滤器:

filter = ...
scan 'mytable', FILTER => filter
Run Code Online (Sandbox Code Playgroud)

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

scan 'mytable', FILTER => "ValueFilter(=, 'binary:myvalue')
Run Code Online (Sandbox Code Playgroud)

您可以将此文档作为"过滤语言"参考.


pel*_*e88 5

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

scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}
Run Code Online (Sandbox Code Playgroud)