广告
返回顶部
首页 > 资讯 > 数据库 >HBase过滤器
  • 485
分享到

HBase过滤器

HBase过滤器 2015-12-30 13:12:36 485人浏览 绘本
摘要

过滤器 我们我们来看几个常用的过滤器: 过滤器 说明 RowFilter 筛选指定的RowKey FilterList 组合其他过滤器 ValueFilter 筛选指定值的数据 PrefixFilter 筛选有指定

HBase过滤器

过滤器

我们我们来看几个常用的过滤器:

过滤器 说明
RowFilter 筛选指定的RowKey
FilterList 组合其他过滤器
ValueFilter 筛选指定值的数据
PrefixFilter 筛选有指定前缀的RowKey
QualifierFilter 筛选指定列名的列
ColumnPrefixFilter 筛选指定前缀的列
SingleColumnValueFilter 筛选指定列的指定值

HBase提供了很多过滤器,但是常用的就几个,最常用的就是:

  1. 通过RowKey过滤的RowFilter过滤器,
  2. 通过RowKey前缀过滤的PrefixFilter过滤器
  3. 通过指定列的指定值过滤的SingleColumnValueFilter过滤器
  4. FilterList组合其他过滤器的过滤器

hbase filter

如上图所示,是HBase提供的一下过滤器。

列名过滤器

列名过滤器

如上图所示,列名过滤器QualifierFilter,可以过滤所有列簇中指定列名的列,图中获取的是所有列名为value的列。

列名前缀过滤器

列前缀过滤器

如上图所示,列名前缀过滤器ColumnPrefixFilter,可以过滤所有列簇中指定列名前缀的列,图中获取的是所有列名为前缀为level的列。

列簇过滤器

列簇过滤器

如上图所示,列簇过滤器FamilyFilter,可以过滤指定列簇的数据,图中获取的是所有列簇为addr中的所有列数据。

Row Key过滤器

RowKey过滤器

如上图所示,是Row Key过滤器RowFilter,可以过滤指定RowKey的数据,图中获取的是RowKey为20200107161557行中所有列簇中所有列的数据。

Row Key前缀过滤器

RowKey前缀过滤器

如上图所示,是Row Key前缀过滤器PrefixFilter,可以过滤RowKey为指定前缀的数据,图中获取的指定RowKey前缀为2020的行中所有列簇中所有列的数据。

值过滤器

值过滤器主要有3个:

  1. ValueFilter
  2. SingleColumnValueFilter
  3. SingleColumnValueExcludeFilter

他们的区别是SingleColumnValueFilter过滤器过滤的是指定列的值,ValueFilter过滤的是任意列的值,SingleColumnValueExcludeFilter是排除指定列是指定值的数据。

过滤器组合

FilterList不是一个过滤器,但是它可以组合其他过滤器。

比较符号

比较肯定就用比较符号:

枚举 含义
LESS 小于
EQUAL 相等
NO_OP 排除所有
GREATER 大于
NOT_EQUAL 不等于
LESS_OR_EQUAL 小于等于
GREATER_OR_EQUAL 大于等于

对应的Java类org.apache.hadoop.hbase.CompareOperator

比较方式

枚举 说明
BitComparator 按位匹配
NullComparator 匹配空
BinaryComparator 匹配完整字节数组
SubstrinGComparator 子串匹配
RegexStringComparator 正则表达式匹配,只支持EQUAL、NOT_EQUAL
BinaryPrefixComparator 匹配字节数组前缀

比较方式使用的比较多的是子串匹配SubstringComparator和匹配字节数组前缀BinaryPrefixComparator。

注意:HBase中存的是字节数组,不是比较值

要比较值,hbase-common包给了2个值比较的类LongComparator和BigDecimalComparator,如果要比较Integer、double等其他类型需要自定义Comparator,关于HBase自定义Comparator,可以参考:HBase自定义Comparator过滤数值

常用过滤器示例

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CompareOperator;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Test;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.fORMat.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

public class HBaseFilterTest {

    private static final String ZK_CONNECT_KEY = "hbase.ZooKeeper.quorum";

    private static final String ZK_CONNECT_VALUE = "127.0.0.1:2181";

    private static final String TABLE_NAME_STR = "user";

    private static final TableName TABLE_NAME = TableName.valueOf(TABLE_NAME_STR);

    private static final Configuration configuration = HBaseConfiguration.create();

    private static Connection connection;

    private static Admin admin;

    private static Table table;

    static {
        configuration.set(ZK_CONNECT_KEY, ZK_CONNECT_VALUE);
        try {
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
            table = connection.getTable(TABLE_NAME);
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    @Test
    public void init() throws Exception {
        if(admin.tableExists(TABLE_NAME)) {
            admin.disableTable(TABLE_NAME);//删除前必须先禁用
            admin.deleteTable(TABLE_NAME);//删除表
        }
        createTable();
        puts();
    }

    private void createTable() throws Exception {
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TABLE_NAME);
        ColumnFamilyDescriptor profile = ColumnFamilyDescriptorBuilder.of("profile");
        ColumnFamilyDescriptor consume = ColumnFamilyDescriptorBuilder.of("consume");

        tableDescriptorBuilder.setColumnFamily(profile);
        tableDescriptorBuilder.setColumnFamily(consume);
        TableDescriptor tableDescriptor = tableDescriptorBuilder.build();
        admin.createTable(tableDescriptor);//创建表
    }

    private void puts() throws Exception {
        Table table = connection.getTable(TABLE_NAME);
        table.put(getPuts());
    }

    private static List getPuts(){
        LinkedList puts = new LinkedList<>();
        LocalDateTime localDate = LocalDateTime.now();
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        Random random = new Random();

        byte[] profileFamily = Bytes.toBytes("profile");
        byte[] sexesColumn = Bytes.toBytes("sex");
        byte[] birthdayColumn = Bytes.toBytes("birthday");

        byte[] consumeFamily = Bytes.toBytes("consume");
        byte[] totalColumn = Bytes.toBytes("total");

        for(int i=0;i<100;i++) {
            byte[] rowKey = Bytes.toBytes(String.format("%03D",i));
            Put put = new Put(rowKey);

            int sex = random.nextInt(2);
            String birthday = localDate.plusDays(random.nextInt(100)).format(pattern);
            int total = random.nextInt(1000) + 1000;

            put.addColumn(profileFamily, sexesColumn, Bytes.toBytes(sex));
            put.addColumn(profileFamily, birthdayColumn, Bytes.toBytes(birthday));
            put.addColumn(consumeFamily, totalColumn, Bytes.toBytes(total));

            puts.add(put);
        }
        return puts;
    }


    
    @Test
    public void rowKeyPrefixFilter() throws IOException {
        Scan scan = new Scan();
        PrefixFilter prefixFilter = new PrefixFilter("05".getBytes());
        scan.setFilter(prefixFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            List cells = result.listCells();
            for(Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    
    @Test
    public void rowFilter() throws IOException {
        Scan scan = new Scan();
        Filter rowFilter = new RowFilter(CompareOperator.GREATER, new BinaryComparator("050".getBytes()));
        scan.setFilter(rowFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for (Result result : resultScanner) {
            List cells = result.listCells();
            for (Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }


    
    @Test
    public void singleColumnValueFilter() throws IOException {
        Scan scan = new Scan();
//        BinaryComparator comparator = new BinaryComparator(Bytes.toBytes(0));
//        BitComparator comparator = new BitComparator(Bytes.toBytes(1), BitComparator.BitwiseOp.XOR);
        BinaryPrefixComparator comparator = new BinaryPrefixComparator(Bytes.toBytes(0));
        byte[] family = "profile".getBytes();
        byte[] column = "sex".getBytes();
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
                family,
                column,
                CompareOperator.EQUAL,
//                comparator);
                Bytes.toBytes(0));

        singleColumnValueFilter.setFilterIfMissing(true);
        scan.setFilter(singleColumnValueFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        printResultScanner(resultScanner);
    }

    
    @Test
    public void filterListTest() throws IOException {
//        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);//满足一个条件
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);//满足所有条件
        byte[] family = "profile".getBytes();
        byte[] column = "sex".getBytes();
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
                family,
                column,
                CompareOperator.EQUAL,
                Bytes.toBytes(0));
        filterList.addFilter(singleColumnValueFilter);

        byte[] consumeFamily = Bytes.toBytes("consume");
        byte[] totalColumn = Bytes.toBytes("total");
        singleColumnValueFilter = new SingleColumnValueFilter(
                consumeFamily,
                totalColumn,
                CompareOperator.GREATER_OR_EQUAL,
                Bytes.toBytes(1100));
        filterList.addFilter(singleColumnValueFilter);
        Scan scan = new Scan();
        scan.setFilter(filterList);

        ResultScanner resultScanner = table.getScanner(scan);
        printResultScanner(resultScanner);
    }

    @Test
    public void testGet() throws IOException {
        LinkedList gets = new LinkedList<>();
        Get get = new Get(Bytes.toBytes("050"));
        gets.add(get);
        get = new Get(Bytes.toBytes("051"));
        gets.add(get);
        Result[] results = table.get(gets);
        printResult(results);
    }

    @Test
    public void testGetFilter() throws IOException {
        LinkedList gets = new LinkedList<>();
        Get get = new Get(Bytes.toBytes("050"));
        gets.add(get);
        get = new Get(Bytes.toBytes("051"));
        byte[] family = "profile".getBytes();
        byte[] column = "sex".getBytes();
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(family, column, CompareOperator.EQUAL, Bytes.toBytes(0));
        get.setFilter(singleColumnValueFilter);
        gets.add(get);
        Result[] results = table.get(gets);
        printResult(results);
    }

    @Test
    public void printAll() throws IOException {
        Scan s = new Scan();
        ResultScanner resultScanner = table.getScanner(s);
        printResultScanner(resultScanner);
    }

    private static void printResultScanner(ResultScanner resultScanner){
        byte[] profileFamily = Bytes.toBytes("profile");
        byte[] sexesColumn = Bytes.toBytes("sex");
        byte[] birthdayColumn = Bytes.toBytes("birthday");

        byte[] consumeFamily = Bytes.toBytes("consume");
        byte[] totalColumn = Bytes.toBytes("total");
        for (Result result : resultScanner) {
            byte[] sex = result.getValue(profileFamily, sexesColumn);
            byte[] birthday = result.getValue(profileFamily, birthdayColumn);

            byte[] total = result.getValue(consumeFamily, totalColumn);

            System.out.println(String.format("rowkey:%s,sex:%d,birthday:%s,total:%d",
                    Bytes.toString(result.getRow()),Bytes.toInt(sex),Bytes.toString(birthday),Bytes.toInt(total)
            ));
        }
    }

    private static void printResult(Result[] datas){
        byte[] profileFamily = Bytes.toBytes("profile");
        byte[] sexesColumn = Bytes.toBytes("sex");
        byte[] birthdayColumn = Bytes.toBytes("birthday");

        byte[] consumeFamily = Bytes.toBytes("consume");
        byte[] totalColumn = Bytes.toBytes("total");
        for (Result result : datas) {
            byte[] sex = result.getValue(profileFamily, sexesColumn);
            System.out.println(sex);
            byte[] birthday = result.getValue(profileFamily, birthdayColumn);
            System.out.println(birthday);

            byte[] total = result.getValue(consumeFamily, totalColumn);
            System.out.println(total);

            byte[] row = result.getRow();
            System.out.println(row);
            if(row == null){
                continue;
            }
            System.out.println(String.format("rowkey:%s,sex:%d,birthday:%s,total:%d",
                    Bytes.toString(row),Bytes.toInt(sex),Bytes.toString(birthday),Bytes.toInt(total)
            ));
        }
    }

}

另一些测试示例

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CompareOperator;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Test;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

public class HBaseFilterTest {

    private static final String ZK_CONNECT_KEY = "hbase.zookeeper.quorum";

    private static final String ZK_CONNECT_VALUE = "127.0.0.1:2181";

    private static final String TABLE_NAME_STR = "weather";

    private static final TableName TABLE_NAME = TableName.valueOf(TABLE_NAME_STR);

    private static final Configuration configuration = HBaseConfiguration.create();

    private static Connection connection;

    private static Admin admin;

    private static Table table;

    static {
        configuration.set(ZK_CONNECT_KEY, ZK_CONNECT_VALUE);
        try {
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
            table = connection.getTable(TABLE_NAME);
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    @Test
    public void init() throws Exception {
        createTable();
        puts();
    }

    private void createTable() throws Exception {
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TABLE_NAME);
        ColumnFamilyDescriptor addr = ColumnFamilyDescriptorBuilder.of("addr");// province city
        ColumnFamilyDescriptor temperature = ColumnFamilyDescriptorBuilder.of("temperature");// level value
        ColumnFamilyDescriptor windForce = ColumnFamilyDescriptorBuilder.of("wind_force");// level value
        ColumnFamilyDescriptor pm25 = ColumnFamilyDescriptorBuilder.of("pm25");// level value

        tableDescriptorBuilder.setColumnFamily(addr);
        tableDescriptorBuilder.setColumnFamily(temperature);
        tableDescriptorBuilder.setColumnFamily(windForce);
        tableDescriptorBuilder.setColumnFamily(pm25);
        TableDescriptor tableDescriptor = tableDescriptorBuilder.build();
        admin.createTable(tableDescriptor);
    }

    private void puts() throws Exception {
        Table table = connection.getTable(TABLE_NAME);
        table.put(getPuts());
    }

    private static List getPuts(){
        LinkedList puts = new LinkedList<>();
        LocalDateTime localDate = LocalDateTime.now();
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        Random random = new Random();
        String[] provinces = {"SC","XJ"};
        String[] cities = {"CD","BJ","SH","CQ"};
        int level;
        String value;
        for(int i=0;i<=60;i++) {
            localDate = localDate.plusDays(i);
            byte[] rowKey = Bytes.toBytes(localDate.format(pattern));
            Put put = new Put(rowKey);

            String province = provinces[random.nextInt(provinces.length)];
            String city = cities[random.nextInt(cities.length)];
            put.addColumn(Bytes.toBytes("addr"), Bytes.toBytes("province"), Bytes.toBytes(province));
            put.addColumn(Bytes.toBytes("addr"), Bytes.toBytes("city"), Bytes.toBytes(city));
            level = random.nextInt(100);
            value = "temperature_" + level;
            put.addColumn(Bytes.toBytes("temperature"), Bytes.toBytes("level_temperature"), Bytes.toBytes(level));
            put.addColumn(Bytes.toBytes("temperature"), Bytes.toBytes("value"), Bytes.toBytes(value));
            level = random.nextInt(100);
            value = "wind_force_" + level;
            put.addColumn(Bytes.toBytes("wind_force"), Bytes.toBytes("level_wind_force"), Bytes.toBytes(level));
            put.addColumn(Bytes.toBytes("wind_force"), Bytes.toBytes("value"), Bytes.toBytes(value));
            level = random.nextInt(100);
            value = "pm25" + level;
            put.addColumn(Bytes.toBytes("pm25"), Bytes.toBytes("level_pm25"), Bytes.toBytes(level));
            put.addColumn(Bytes.toBytes("pm25"), Bytes.toBytes("value"), Bytes.toBytes(value));
            puts.add(put);
        }
        return puts;
    }

    @Test
    public void qualifierFilter() throws Exception {
        Scan scan = new Scan();
        BinaryComparator qualifierComparator = new BinaryComparator("value".getBytes());
        Filter qualifierFilter = new QualifierFilter(CompareOperator.EQUAL, qualifierComparator);
        scan.setFilter(qualifierFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            List cells = result.listCells();
            for(Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    @Test
    public void  columnPrefixFilter() throws IOException {
        Scan scan = new Scan();
        ColumnPrefixFilter columnPrefixFilter = new ColumnPrefixFilter("level".getBytes());
        scan.setFilter(columnPrefixFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            List cells = result.listCells();
            for(Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    @Test
    public void familyFilter() throws IOException {
        Scan scan = new Scan();
        Filter familyFilter = new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator("addr".getBytes()));
        scan.setFilter(familyFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            List cells = result.listCells();
            for(Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    @Test
    public void rowKeyPrefixFilter() throws IOException {
        Scan scan = new Scan();
        PrefixFilter prefixFilter = new PrefixFilter("2020".getBytes());
        scan.setFilter(prefixFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            List cells = result.listCells();
            for(Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    @Test
    public void rowFilter() throws IOException {
        Scan scan = new Scan();
        Filter rowFilter = new RowFilter(CompareOperator.GREATER, new BinaryComparator("20200107161557".getBytes()));
        scan.setFilter(rowFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for (Result result : resultScanner) {
            List cells = result.listCells();
            for (Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    @Test
    public void singleColumnValueExcludeFilter() throws IOException {
        Scan scan = new Scan();
        BinaryComparator binaryComparator = new BinaryComparator(Bytes.toBytes("SC"));
        SingleColumnValueExcludeFilter singleColumnValueExcludeFilter = new SingleColumnValueExcludeFilter(
                "addr".getBytes(),//family
                "province".getBytes(),//column
                CompareOperator.EQUAL,
                binaryComparator);
        singleColumnValueExcludeFilter.setFilterIfMissing(true);

        scan.setFilter(singleColumnValueExcludeFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            List cells = result.listCells();
            for (Cell cell : cells) {
                System.out.println(cell);
            }
        }
    }

    @Test
    public void singleColumnValueFilter() throws IOException {
        Scan scan = new Scan();
        SubstringComparator substringComparator = new SubstringComparator("XJ");
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
                "addr".getBytes(),
                "province".getBytes(),
                CompareOperator.EQUAL,
                substringComparator);
        singleColumnValueFilter.setFilterIfMissing(true);
        scan.setFilter(singleColumnValueFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("addr"),Bytes.toBytes("province"))));
        }
    }

    @Test
    public void valueFilter() throws IOException {
        Scan scan = new Scan();
        Filter valueFilter = new ValueFilter(CompareOperator.EQUAL, new SubstringComparator("50"));
        scan.setFilter(valueFilter);
        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("temperature"),Bytes.toBytes("value"))));
            System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("wind_force"),Bytes.toBytes("value"))));
            System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("pm25"),Bytes.toBytes("value"))));
        }
    }

    @Test
    public void filterListTest() throws IOException {
//        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);//满足一个条件
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);//满足所有条件
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
                "addr".getBytes(),
                "province".getBytes(),
                CompareOperator.EQUAL,
                Bytes.toBytes("SC"));
        filterList.addFilter(singleColumnValueFilter);
        singleColumnValueFilter = new SingleColumnValueFilter(
                "addr".getBytes(),
                "city".getBytes(),
                CompareOperator.EQUAL,
                Bytes.toBytes("SH"));
        filterList.addFilter(singleColumnValueFilter);
        Scan scan = new Scan();
        scan.setFilter(filterList);

        ResultScanner resultScanner = table.getScanner(scan);
        for(Result result : resultScanner) {
            System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("addr"),Bytes.toBytes("province"))));
            System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("addr"),Bytes.toBytes("city"))));
        }
    }
}
您可能感兴趣的文档:

--结束END--

本文标题: HBase过滤器

本文链接: https://www.lsjlt.com/news/7590.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HBase过滤器
    过滤器 我们我们来看几个常用的过滤器: 过滤器 说明 RowFilter 筛选指定的RowKey FilterList 组合其他过滤器 ValueFilter 筛选指定值的数据 PrefixFilter 筛选有指定...
    99+
    2015-12-30
    HBase过滤器
  • HBase Filter 过滤器概述
    abc 过滤器介绍 HBase过滤器是一套为完成一些较高级的需求所提供的API接口。 过滤器也被称为下推判断器(push-down predicates),支持把数据过滤标准从客户端下推到服务器,带有 Filter 条件的 RPC...
    99+
    2019-09-14
    HBase Filter 过滤器概述
  • HBase Filter 过滤器之RowFilter详解
    前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考。RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase Rowkey进行数据过滤时可以考虑使...
    99+
    2017-12-16
    HBase Filter 过滤器之RowFilter详解
  • HBase Filter 过滤器之FamilyFilter详解
    前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。FamilyFilter 基于列族进行过滤,在工作中涉及到需要通过HBase 列族进行数据过滤...
    99+
    2017-01-24
    HBase Filter 过滤器之FamilyFilter详解
  • HBase Filter 过滤器之QualifierFilter详解
    前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。QualifierFilter 基于列名进行过滤,在工作中涉及到需要通过HBase 列名...
    99+
    2014-11-14
    HBase Filter 过滤器之QualifierFilter详解
  • HBase Filter 过滤器之 ValueFilter 详解
    前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。ValueFilter 基于列值进行过滤,在工作中涉及到需要通过HBase 列值进行数据过滤时可...
    99+
    2017-12-24
    HBase Filter 过滤器之 ValueFilter 详解
  • HBase Filter 过滤器之 DependentColumnFilter 详解
    前言:本文详细介绍了 HBase DependentColumnFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。DependentColumnFilter 也称参考列过滤器,是一种允许用户...
    99+
    2022-03-14
    HBase Filter 过滤器之 DependentColumnFilter 详解
  • HBase过滤器由什么组成
    这篇文章主要介绍“HBase过滤器由什么组成”,在日常操作中,相信很多人在HBase过滤器由什么组成问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HBase过滤器由什么组成”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • hbase中的位图索引--布隆过滤器
       在hbase中,读业务是非常频繁的。很多操作都是客户端根据meta表定位到具体的regionserver然后再查询region中的具体的数据。   但是现在问题...
    99+
    2022-10-18
  • HBase Filter 过滤器之 Comparator 原理及源码学习
    前言:上篇文章HBase Filter 过滤器概述对HBase过滤器的组成及其家谱进行简单介绍,本篇文章主要对HBase过滤器之比较器作一个补充介绍,也算是HBase Filter学习的必备低阶魂技吧。本篇文中源码基于HBase...
    99+
    2015-01-13
    HBase Filter 过滤器之 Comparator 原理及源码学习
  • HBase内置过滤器java api的知识点总结
    这篇文章主要介绍“HBase内置过滤器java api的知识点总结”,在日常操作中,相信很多人在HBase内置过滤器java api的知识点总结问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HBase内置过滤...
    99+
    2023-06-19
  • HBase基础操作,包括表的增删改查过滤等
    package com.snglw.basic; import java.io.IOException; import java.util.ArrayList; import...
    99+
    2022-10-18
  • java过滤器中Filter的ChainFilter过滤链
    在Java过滤器中,FilterChain是一种过滤链,用于按照一定顺序依次调用多个过滤器对请求进行处理。FilterChain接口定义了一个doFilter方法,该方法接受ServletRequest和ServletResponse作...
    99+
    2023-08-11
    java
  • java过滤器怎么指定过滤文件
    在Java中,可以使用`javax.swing.filechooser.FileNameExtensionFilter`类来指定过滤...
    99+
    2023-10-11
    java
  • [Java]过滤器(Filter)
    一、什么是过滤器 过滤器是Servlet的高级特性之一,是实现Filter接口的Java类! 过滤器的执行流程:   从上面的图我们可以发现,当浏览器发送请求给服务器的时候,先执行过滤器,然后才访问Web的资源。服务器响应Response...
    99+
    2023-08-31
    servlet java 开发语言
  • java过滤器(Filter)
    原文链接:java过滤器(Filter – 编程屋 目录 1 过滤器简介 2 Filter详细介绍 3 Filter的用法 3.1 用法1  3.2 用法2 1 过滤器简介 filter也称之为过滤器,它是javaWeb三大组件之一(S...
    99+
    2023-09-07
    servlet
  • jQuery如何使用过滤器过滤多属性
    这篇文章给大家分享的是有关jQuery如何使用过滤器过滤多属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用过滤器过滤多属性//This precision-based approache...
    99+
    2023-06-27
  • springboot使用过滤器
    一:过滤器 1.过滤器介绍 过滤器是处于客户端与服务器资源文件之间的一道过滤网,帮助我们过滤一些不符合要求的请求。通常用作 Session校验,判断用户权限。 2.过滤器生命周期 使用过滤器很简单,只需要实现Filter类,然后重写它的3个...
    99+
    2023-09-03
    servlet java 开发语言 spring boot
  • SpringBoot过滤器实现项目内接口过滤详解
    目录业务需要处理的问题公众号用户信息与业务系统做绑定将路由中心的接口与业务系统的接口判断处理步骤全部代码代理转发实现业务 由于业务需求,存在两套项目,一套是路由中心,一套是业务系统....
    99+
    2023-05-16
    SpringBoot实现项目接口过滤 SpringBoot项目接口过滤 SpringBoot过滤器
  • springboot中使用过滤器,jsoup过滤XSS脚本详解
    目录springboot使用过滤器,jsoup过滤XSS脚本1.把可能包含脚本的参数位置分析一下2.分析实现过程3.代码实现过程使用jsoup防止XSS攻击springboot使用过...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作