doing a ValueFilter or a ColumnFilter on hbase shell

后端 未结 3 456
长发绾君心
长发绾君心 2021-01-13 16:49

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

相关标签:
3条回答
  • 2021-01-13 17:16

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

    scan 'myTable', { COLUMNS => 'cf:abc', FILTER => "ValueFilter(=, 'substring:myvalue')"}
    
    0 讨论(0)
  • 2021-01-13 17:28

    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.

    0 讨论(0)
  • 2021-01-13 17:34

    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.

    (edit for closing double quote)

    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题