HBase的过滤器、RowKe过滤器、列簇过滤器、字段过滤器、值过滤器、参考值过滤器、比较运算符、比较器 07

1. HBase的过滤器如下5种

  • RowFilter 基于RowKey的过滤
  • FamilyFilte 基于列簇的过滤
  • QualifierFilter 基于字段的过滤
  • ValueFilter 基于值的过滤
  • DependentColumnFilter 参考值过滤

2. HBase的比较运算符

  • LESS 匹配小于设定值的值
  • LESS_OR_EQUAL 匹配小于或等于设定值的值
  • EQUAL 匹配等于设定值的值
  • NOT_EQUAL 匹配与设定值不相等的值
  • GREATER_OR_EQUAL 匹配大于或等于设定值的值
  • GREATER 匹配大于设定值的值
  • NO_OP 排除一切值

3. HBase的比较器

  • BinaryComparator 使用Bytes.compareTo()比较当前的阀值
  • BinaryPrefixComparator 与上面的相似, 使用Bytes.compareTo()进行匹配,但是是从左端开始前缀匹配
  • NullComparator 不做匹配,只判断当前值不是null
  • BitComparator 通过BitWiseOp类提供的按照 位与(AND),或与(OR)、异或(XOR)操作执行位级比较。
  • RegexStringComparator 根据一个正则表达式,在实例化这个比较器的时候去匹配表中的数据。
  • SubStringComparator 把阀值和表中数据String实例, 同时通过contains()操作匹配字符串。

4. 示例代码(过滤器、运算符、比较器)

//1. 创建RowFilter过滤器、BinaryComparator比较器、EQUAL比较运算符
 RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL
                , new BinaryComparator("rowkey_10".getBytes()));

//2. 创建familyFilter过滤器、BinaryComparator比较器、NO_OP比较运算符
FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.NO_OP,
                new BinaryComparator("base_Info".getBytes()));

//3. 创建qualifierFilter过滤器、BinaryComparator比较器、EQUAL比较运算符
QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL,
                new BinaryComparator("username".getBytes()));

//4. 创建valueFilter过滤器、BinaryComparator比较器、EQUAL比较运算符
ValueFilter valueFilter = new ValueFilter(CompareFilter.CompareOp.EQUAL,
                new BinaryComparator("张三".getBytes()));

5. 查询值等于张三的所有数据

@Test
public void tesValueFilter() throws IOException {
        //1、创建过滤器
        ValueFilter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator("张三".getBytes()));
        
        //2、创建扫描器
        Scan scan = new Scan();
        
        //3、将过滤器设置到扫描器中
        scan.setFilter(filter);
       
        //4、获取HBase的表
        Table table = connection.getTable(TableName.valueOf("user"));
        
        //5、扫描HBase的表(注意过滤操作是在服务器进行的,也即是在regionServer进行的)
        ResultScanner scanner = table.getScanner(scan);
        for (Result result : scanner) {
            // 6.打印数据 获取所有的单元格
            List<Cell> cells = result.listCells();
            for (Cell cell : cells) {
                // 打印rowkey,family,qualifier,value
                System.out.println(Bytes.toString(CellUtil.cloneRow(cell))
                        + "==> " + Bytes.toString(CellUtil.cloneFamily(cell))
                        + "{" + Bytes.toString(CellUtil.cloneQualifier(cell))
                        + ":" + Bytes.toString(CellUtil.cloneValue(cell)) + "}");
            }
        }
}

如果喜欢本文章,请用小手点个赞~

你可能感兴趣的:(Hbase)