Hbase行键过滤器RowFilter

绝地灬酷狼 2022-06-12 05:44 293阅读 0赞

RowFilter是用来对rowkey进行过滤的,比较符如下:




































Operator

Description

LESS

小于

LESS_OR_EQUAL

小于等于

EQUAL

等于

NOT_EQUAL

不等于

GREATER_OR_EQUAL

大于等于

GREATER

大于

NO_OP

排除所有
























Comparator

Description

Bytes.compareTo()比较BinaryPrefixComparator

Does not compare against an actual value but whether a given one is null, or not null.

Performs a bitwise comparison, providing a BitwiseOp class with AND, OR, and XOR operators.

contains()来判断<span “=”” style=”word-wrap: break-word; font-size: 9pt;”>

下面是相关比较符的例子

点击(此处)折叠或打开

  1. package com.hxl;

  2. import java.io.IOException;

  3. import org.apache.hadoop.conf.Configuration;

  4. import org.apache.hadoop.hbase.Cell;

  5. import org.apache.hadoop.hbase.CellUtil;

  6. import org.apache.hadoop.hbase.KeyValue;

  7. import org.apache.hadoop.hbase.client.HTable;

  8. import org.apache.hadoop.hbase.client.Result;

  9. import org.apache.hadoop.hbase.client.ResultScanner;

  10. import org.apache.hadoop.hbase.client.Scan;

  11. import org.apache.hadoop.hbase.filter.BinaryComparator;

  12. import org.apache.hadoop.hbase.filter.CompareFilter;

  13. import org.apache.hadoop.hbase.filter.Filter;

  14. import org.apache.hadoop.hbase.filter.RowFilter;

  15. import org.apache.hadoop.hbase.util.Bytes;

  16. import com.hxl.ConnectDB;

  17. public class RowFilterTest {

  18. public void rowfilter(String tablename, String rowkeyvalue) {

  19. Configuration configuration = null;

  20. configuration = new ConnectDB().getConf();

  21. try {

  22. HTable table = new HTable(configuration, tablename);

  23. Filter filter1 = new RowFilter(CompareFilter.CompareOp.EQUAL,

  24. new BinaryComparator(Bytes.toBytes(rowkeyvalue)));

  25. // EQUAL =

  26. Scan s = new Scan();

  27. s.setFilter(filter1);

  28. ResultScanner rs = table.getScanner(s);

  29. for (Result r : rs) {

  30. System.out.println(“rowkey:” + new String(r.getRow()));

  31. for (KeyValue keyValue : r.raw()) {

  32. System.out.println(“列族:” + new String(keyValue.getFamily())

  33. + “ 列:” + new String(keyValue.getQualifier()) + “:”

  34. + new String(keyValue.getValue()));

  35. }

  36. }

  37. } catch (IOException e) {

  38. // TODO Auto-generated catch block

  39. e.printStackTrace();

  40. }

  41. }

  42. }

相关的过滤方法使用:
提取rowkey以01结尾数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator(“.*01$”));

提取rowkey以包含201407的数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator(“201407”));

提取rowkey以123开头的数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryPrefixComparator(“123”.getBytes()));

-- The End —

发表评论

表情:
评论列表 (有 0 条评论,293人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hbase(四) 过滤器查询

    引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器 过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端; 一、hba