zoukankan      html  css  js  c++  java
  • Hbase 四种过滤器

    四种过滤器   1、行键 过滤器   2、 前缀过滤器    3、 时间戳过滤器     4、 列族过滤器

    package com.bw.hbasefilter;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.HTable;
    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.filter.BinaryComparator;
    import org.apache.hadoop.hbase.filter.CompareFilter;
    import org.apache.hadoop.hbase.filter.Filter;
    import org.apache.hadoop.hbase.filter.PrefixFilter;
    import org.apache.hadoop.hbase.filter.QualifierFilter;
    import org.apache.hadoop.hbase.filter.RegexStringComparator;
    import org.apache.hadoop.hbase.filter.RowFilter;
    import org.apache.hadoop.hbase.filter.TimestampsFilter;
    
    public class HbaseFilter {
    //静态块  连接zk   并且配置操作的表
        static HTable table;
        static {
            try {
                Configuration conf = HBaseConfiguration.create();
                conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06");
                table = new HTable(conf, "Nurse");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //2、前缀过滤器
        public static void prefixFilter() throws Exception {
            Scan scan = new Scan();              //过滤以 Nurse00009999  为前缀的行键
            PrefixFilter filter = new PrefixFilter("Nurse00009999".getBytes());
            scan.setFilter(filter);
            ResultScanner scanner = table.getScanner(scan);
            for (Result r : scanner) {
                System.out.println("行键row:" + new String(r.getRow()));// 行键
                System.out.println("查询数据的结果:" + new String(r.getValue("info".getBytes(), "name".getBytes())));
            }
            
        }
        //3、时间戳过滤器  两个时间之间的数据
        public static void timeFilter() throws Exception {
            Scan scan = new Scan();
            List<Long> list = new ArrayList<Long>();
            list.add(1557323272643L);
            list.add(1558146272160L);
            TimestampsFilter filter = new TimestampsFilter(list);
            scan.setFilter(filter);
            ResultScanner scanner = table.getScanner(scan);
            for (Result r : scanner) {
                System.out.println("行键row:" + new String(r.getRow()));// 行键
                System.out.println("查询数据的结果:" + new String(r.getValue("info".getBytes(), "name".getBytes())));
            }
            
        }
        //4、列族过滤器  每行数据含有这一列的
        public static void qualifierFilter() throws Exception {
            Scan scan = new Scan();
            Filter filter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, new  RegexStringComparator("age"));
            scan.setFilter(filter);
            ResultScanner scanner = table.getScanner(scan);
            for (Result r : scanner) {
                System.out.println("行键row:" + new String(r.getRow()));// 行键
                System.out.println("查询数据的结果:" + new String(r.getValue("info".getBytes(), "name".getBytes())));
            }
        }
        
        // 1、行键过滤器
        public static void rowFilter() throws Exception {
            Scan scan = new Scan();
            Filter filter = new RowFilter(CompareFilter.CompareOp.LESS,
                    // 要的是小于 Nurse00000100 值的行键数据
                    new BinaryComparator("Nurse0000100".getBytes()));
            scan.setFilter(filter);
            ResultScanner scanner = table.getScanner(scan);
            for (Result r : scanner) {
                System.out.println("行键row:" + new String(r.getRow()));// 行键
                System.out.println("查询数据的结果:" + new String(r.getValue("info".getBytes(), "name".getBytes())));
            }
        }
    //调用 过滤器方法
        public static void main(String[] args) throws Exception {
            //rowFilter();
            //prefixFilter();
            //timeFilter();
            qualifierFilter();
            
        }
    }

     

  • 相关阅读:
    Google官方教程之Selling In-app Products
    In-app Billing 概述
    Android SDK和ADT无法更新的解决办法
    在NGUI中高效优化UIScrollView之UIWrapContent的简介以及使用
    cocos2d-x 3.1 编译脚本android-build.py
    Storm---DirectGroup(直接分组)
    Lucene Spatial构建地理空间索引
    Log4j2日志配置
    Guava缓存使用
    Maven 多套环境配置
  • 原文地址:https://www.cnblogs.com/JBLi/p/10885155.html
Copyright © 2011-2022 走看看