doing a ValueFilter or a ColumnFilter on hbase she

2019-02-18 15:08发布

Could anyone please tell me how to do a qualifier filter or ValueFilter from the hbase shell command line?

标签: hbase
3条回答
我欲成王,谁敢阻挡
2楼-- · 2019-02-18 15:42

It is very similar to how you would code in any programming language, for instance :-

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

You obviously have to change parameters depending on the fiter you use.

查看更多
来,给爷笑一个
3楼-- · 2019-02-18 15:56

You can instantiate any filter the same way you would do in Java (with JRuby syntax), and supply the filter as:

filter = ...
scan 'mytable', FILTER => filter

However, instantiating the filter in the shell directly can be cumbersome, so an easier way is to supply filter as a string using Filter Language. For example, to include all the columns with value equal to 'myvalue' in a scan you would use:

scan 'mytable', FILTER => "ValueFilter(=, 'binary:myvalue')

You can check this document as a 'Filter Language' reference.

查看更多
手持菜刀,她持情操
4楼-- · 2019-02-18 15:56

Additionally, to scan a specific column for a substring you can do:

scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}
查看更多
登录 后发表回答