HBase过滤器查询

目录1、过滤器2、比较过滤器使用3、专用过滤器使用4、多过滤器综合查询FilterList1、过滤器过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端过滤器的类型很多,但是可以分为两大类 比较过滤器 专用过滤器 2、比较过滤器使用 HBase过滤器的比较运算符: LESS <LESS_OR_EQUAL <=EQUAL =NOT_EQUAL <>GREATER_OR_EQUAL >=
摘要由CSDN通过智能技术生成

目录

1、过滤器

2、比较过滤器使用

3、专用过滤器使用

4、多过滤器综合查询FilterList


1、过滤器

过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端

过滤器的类型很多,但是可以分为两大类

  • 比较过滤器

  • 专用过滤器

2、比较过滤器使用

  • HBase过滤器的比较运算符

LESS  <
LESS_OR_EQUAL <=
EQUAL =
NOT_EQUAL <>
GREATER_OR_EQUAL >=
GREATER >
NO_OP 排除所有
  • HBase比较过滤器的比较器(指定比较机制):

BinaryComparator  按字节索引顺序比较指定字节数组,采用Bytes.compareTo(byte[])
BinaryPrefixComparator 跟前面相同,只是比较左端前缀的数据是否相同
NullComparator 判断给定的是否为空
BitComparator 按位比较
RegexStringComparator 提供一个正则的比较器,仅支持 EQUAL 和非EQUAL
SubstringComparator 判断提供的子串是否出现在中

比较过滤器

1)rowKey过滤器RowFilter

  • 通过RowFilter过滤比rowKey 0003小的所有值出来

/**
     * 查询所有的rowkey比0003小的所有的数据
     */
    @Test
    public void rowFilter() throws IOException {
        //Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
        Scan scan = new Scan();
        //获取我们比较对象
        BinaryComparator binaryComparator = new BinaryComparator("0003".getBytes());
        /***
         * rowFilter需要加上两个参数
         * 第一个参数就是我们的比较规则
         * 第二个参数就是我们的比较对象
         */
        RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.LESS, binaryComparator);
        //为我们的scan对象设置过滤器
        scan.setFilter(rowFilter);
        ResultScanner scanner = table.getScanner(scan);
        for (Result result : scanner) {
            List<Cell> cells = result.listCells();
            for (Cell cell : cells) {
                byte[] family_name = CellUtil.cloneFamily(cell);
                byte[] qualifier_name = CellUtil.cloneQualifier(cell);
                byte[] rowkey = CellUtil.cloneRow(cell);
                byte[] value = CellUtil.cloneValue(cell);
                //判断id和age字段,这两个字段是整形值
                if("age"
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用HBase Java APIFilter查询列族名称含有“c”的所有数据,具体代码如下: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.QualifierFilter; import org.apache.hadoop.hbase.filter.SubstringComparator; import org.apache.hadoop.hbase.util.Bytes; public class HBaseFilterExample { public static void main(String[] args) throws Exception { Configuration config = HBaseConfiguration.create(); Connection connection = ConnectionFactory.createConnection(config); TableName tableName = TableName.valueOf("table_name"); Scan scan = new Scan(); Filter filter = new QualifierFilter( org.apache.hadoop.hbase.filter.CompareOperator.EQUAL, new SubstringComparator("c") ); scan.setFilter(filter); ResultScanner scanner = connection.getTable(tableName).getScanner(scan); for (Result result : scanner) { for (Cell cell : result.listCells()) { String rowKey = Bytes.toString(CellUtil.cloneRow(cell)); String columnFamily = Bytes.toString(CellUtil.cloneFamily(cell)); String columnQualifier = Bytes.toString(CellUtil.cloneQualifier(cell)); String value = Bytes.toString(CellUtil.cloneValue(cell)); System.out.println("rowKey=" + rowKey + ", columnFamily=" + columnFamily + ", columnQualifier=" + columnQualifier + ", value=" + value); } } } } ``` 其,`QualifierFilter`表示按列名过滤,`SubstringComparator`表示包含子串的过滤条件,`EQUAL`表示精确匹配,而在这里是使用`SubstringComparator`过滤包含子串的列族。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值