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

本文详细介绍了HBase中的五种过滤器:RowFilter、FamilyFilter、QualifierFilter、ValueFilter和DependentColumnFilter,以及六种比较运算符和五种比较器,包括BinaryComparator、BinaryPrefixComparator、NullComparator、BitComparator和RegexStringComparator。并通过示例代码展示了如何使用这些过滤器和比较器来精确查询HBase中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)) + "}");
            }
        }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值