荣耀彩票代理

IT技术互动交流平台

Hbase葱岭探秘 过滤器Api

来源:IT165收集  发布日期:2016-12-22 20:36:19

HbaseZHONGTIGONGLEXUDUODEGUOLVQIJIEKOU,YICILAIDUISHUJUJINXINGGUOLV,SHIDECHAXUNCHUXIANGYAODESHUJU。

行过滤器

荣耀彩票代理ZHENDUIXINGXINXIJINXINGGUOLV,CANSHUZHONGKEYICAIYONGQIANZHUIPIPEI、ANWEIYU、HUO、YIHUOYIJIZICHUANPIPEIDENGPIPEIDEFANGSHI。TONGSHIKEYIKONGZHIEQUAL、NOT_EQUALXUANXIANGJINXINGKONGZHISHAIXUANSHUJUDETIAOJIAN。

/**
     * 行过滤器 BinaryComparator 
        NullComparator:是不是空值
     * BitComparator:通过BitwiseOp类提供的按位与、或、异或操作进行位级别比较 RegexStringComparator:正则匹配
     * SubStringComparator:子串是不是包含进行匹配
     */
    private static void testRowFilter() {
        try {
            HTable table = new HTable(config, 'testtable');

            Scan scan = new Scan();
            scan.addColumn('col1'.getBytes(), 'name'.getBytes());
            // 行过滤器
            Filter filter = new RowFilter(CompareOp.EQUAL,
                    new BinaryComparator('row2'.getBytes()));
            scan.setFilter(filter);

            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info('行过滤器>' + res);
            }

            // 正则的行过滤器
            Filter filter2 = new RowFilter(CompareOp.EQUAL,
                    new RegexStringComparator('.*.2'));
            scan.setFilter(filter2);
            ResultScanner resultRegx = table.getScanner(scan);
            for (Result res : resultRegx) {
                log.info('正则>' + res);
            }

            Filter filterSubString = new RowFilter(CompareOp.EQUAL,
                    new SubstringComparator('w2'));
            scan.setFilter(filterSubString);
            ResultScanner resultSubString = table.getScanner(scan);
            for (Result res : resultSubString) {
                log.info('子串>' + res);
            }

            table.close();
        } catch (IOException e) {
            log.error(e);
        }
    }

列族过滤器

GENJULIEZUDESHUJUJINXINGSHAIXUAN,XINGSHIHESHANGMIANDEXINGGUOLVQILEISI,TONGGUOKONGZHIXIANGYINGDECANSHUZHONGDESHAIXUANDETIAOJIANJINXINGXIANGYINGDESHAIXUAN。

/**
     * 列族过滤器
     */
    private static void testFamlyFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new FamilyFilter(CompareOp.EQUAL,
                    new BinaryComparator('col1'.getBytes()));
            Scan scan = new Scan('row2'.getBytes(), filter);
            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info(res);
            }

            Filter filterNull = new FamilyFilter(CompareOp.EQUAL,
                    new RegexStringComparator('.*.1'));
            Scan scanNull = new Scan('row2'.getBytes(), filterNull);
            scanNull.addFamily('col1'.getBytes());
            ResultScanner resultNull = table.getScanner(scanNull);
            if (resultNull != null) {
                for (Result res : resultNull) {
                    log.info(res);
                }
            } else {
                log.info('null');
            }

            table.close();
        } catch (IOException e) {
            log.error(e);
        }

    }

列名过滤器

HESHANGMIANJIGEGUOLVQILEISI,ZHEILISHIGENJULIEJINXINGSHAIXUAN,SHEZHIXIANGYINGDETIAOJIANHOUJIUKEYIJINXINGXIANGYINGDESHAIXUANLE。

/**
     * 列名过滤器
     */
    public static void testColumFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new QualifierFilter(CompareOp.EQUAL,
                    new BinaryComparator('name'.getBytes()));
            Scan scan = new Scan('row2'.getBytes(), filter);
            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info(res);
            }

            Get get = new Get('row2'.getBytes());
            get.setFilter(filter);
            Result resultGet = table.get(get);
            log.info(resultGet);

            table.close();
        } catch (IOException e) {
            log.info(e);
        }

    }

参考列过滤器

荣耀彩票代理CANKAOLIEGUOLVQIGENJULIEZUHELIEXIANDINGFUJINXINGSHAIXUAN,FANHUIYUCANKAOLIEXIANGTONGSHIJIANCHUODEXINGDESUOYOUJIANZHIDUI。

/**
     * 参考列过滤器
     */
    public static void testDependentColumnFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new DependentColumnFilter('col1'.getBytes(),
                    'name'.getBytes(), false);
            Scan scan = new Scan();
            scan.setFilter(filter);
            ResultScanner resu = table.getScanner(scan);
            for (Result result : resu) {
                log.info(result);
            }

            Get get = new Get('row2'.getBytes());
            get.setFilter(filter);
            Result result = table.get(get);
            log.info(result);

            table.close();
        } catch (IOException e) {
            log.error(e);
        }

    }

单列过滤器

TONGGUOYILIEDEZHIJINXINGPANDUANSHIBUSHIXUYAOJINXINGGUOLV。

/**
     * 单列过滤器
     */
    public static void testSingleColumnValueFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new SingleColumnValueFilter('col1'.getBytes(),
                    'name'.getBytes(), CompareOp.EQUAL, 'wy'.getBytes());
            Scan scan = new Scan();
            scan.setFilter(filter);
            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info(res);
            }

            Get get = new Get('row2'.getBytes());
            get.setFilter(filter);
            Result resultGet = table.get(get);
            log.info(resultGet);

            table.close();
        } catch (IOException e) {
            log.info(e);
        }
    }

前缀过滤器

GENJUQIANZHUIJINXINGPIPEIXINGJIANDESHUJU,BENLIZHONGJICHUDESHIYIrowWEIQIANZHUIDEXINGDESHUJU。

/**
     * 前缀过滤器
     */
    public static void testPrefixFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new PrefixFilter('row'.getBytes());
            Scan scan = new Scan();

            scan.setFilter(filter);
            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info('res>' + res);
            }

            Get get = new Get('row2'.getBytes());
            Result resultGet = table.get(get);
            log.info('get>' + resultGet);

            table.close();
        } catch (IOException e) {
            log.info(e);
        }
    }

分页过滤器

TONGGUOpageFilterSHEZHIYIYEZHONGSHUJUDETIAOSHU,ZHUYI,ZAIZHONGXINSHEZHIQISHIXINGDESHIHOU,YAOSHIDEXINDEXINGHESHUJUKUZHONGYOUQUBIE,FOUZE,HUISIXUNHUANWUFATINGZHI。

/**
     * 分页过滤器
     */
    public static void testPageFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new PageFilter(10);
            int totalRows = 0;
            byte[] lastRow = null;
            Scan scan = new Scan();
            while (true) {

                scan.setFilter(filter);
                if (lastRow != null) {
                    // 加上0后表示新的开始防止row的内容一样造成死循环
                    byte[] startRow = Bytes.add(lastRow, POSTFIX);
                    scan.setStartRow(startRow);
                }

                ResultScanner resultScan = table.getScanner(scan);

                int localRows = 0;
                Result result = resultScan.next();
                while (result != null) {

                    log.info(result);
                    localRows++;
                    totalRows++;

                    lastRow = result.getRow();
                    result = resultScan.next();
                }
                if (localRows == 0)
                    break;
            }
            log.info(totalRows);

            table.close();
        } catch (IOException e) {
            log.info(e);
        }

    }
/**
     * 列分页过滤
     */
    public static void testColumnPaginationFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filter = new ColumnPaginationFilter(5, 10);
            Scan scan = new Scan();
            scan.setFilter(filter);

            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info(res);
            }

            table.close();
        } catch (IOException e) {
            log.info(e);
        }
    }

Skip过滤器

荣耀彩票代理YUValueFilterJIEHESHIYONG,RUGUOYIXINGZHONGMOUYILIEBUFUHEYAOQIUDEHUAZHIJIEBEIGUOLVDIAO。

/**
     * 跳过过滤器
     */
    public static void testSkipFilter() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filt = new ValueFilter(CompareOp.NOT_EQUAL,
                    new BinaryComparator('v'.getBytes()));
            Scan scanValue = new Scan();
            scanValue.setFilter(filt);
            ResultScanner ress = table.getScanner(scanValue);

            for (Result result : ress) {
                log.info('<' + result);
            }

            Filter filter = new SkipFilter(filt);

            Scan scan = new Scan();
            scan.setFilter(filter);
            ResultScanner result = table.getScanner(scan);
            for (Result res : result) {
                log.info('>' + res);
            }

            table.close();
        } catch (IOException e) {
            log.info(e);
        }
    }

全匹配过滤器

荣耀彩票代理ZAIYUDAOMOUGETIAOJIANZHIQIANDESHUJUQUANBUCHAXUNCHULAI,ZHIDAOYUDAOMANZUGAITIAOJIANDESHUJUZHIHOUJIESHUCHAXUN。

    /**
     * 全匹配过滤器
     */
    public static void testWhileMatch() {

        try {
            HTable table = new HTable(config, 'testtable');

            Filter filt = new RowFilter(CompareOp.NOT_EQUAL,
                    new BinaryComparator('row6'.getBytes()));

            Scan scan = new Scan();
            scan.setFilter(filt);
            ResultScanner results = table.getScanner(scan);
            for (Result res : results) {
                log.info('>' + res);
            }

            Filter filter = new WhileMatchFilter(filt);
            scan.setFilter(filter);
            ResultScanner resultScan = table.getScanner(scan);
            for (Result res : resultScan) {
                log.info('<' + res);
            }

            table.close();
        } catch (IOException e) {
            log.info(e);
        }

    }

过滤器组合

KEYIJIANGSHANGMIANDEGUOGEGUOLVQIFANGZAIYIGEListZHONG,RANHOUXINGCHENGDUOGEGUOLVQIDEZUHEDEXINGSHIJINXINGGUOLV。

    /**
     * 过滤器组合
     */
    public static void testFilterList() {

        List<Filter> filterList = new ArrayList<Filter>();
        Filter filter1 = new SingleColumnValueFilter('col1'.getBytes(),
                'name'.getBytes(), CompareOp.EQUAL, 'x'.getBytes());
        filterList.add(filter1);

        Filter filter2 = new RowFilter(CompareOp.NOT_EQUAL,
                new BinaryComparator('row2'.getBytes()));
        filterList.add(filter2);

        FilterList filters = new FilterList(filterList);
        Scan scan = new Scan();
        scan.setFilter(filters);

        try {
            HTable table = new HTable(config, 'testtable');

            ResultScanner result = table.getScanner(scan);

            for (Result res : result) {
                log.info(res);
            }

            table.close();
        } catch (IOException e) {
            log.info(e);
        }
    }

荣耀彩票代理ZHUANZAIZHUMINGCHUCHU:http://blog.csdn.net/wangyang1354/article/details/53761559

Tag标签:      
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规