您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > educoder平台HBase高级特性:过滤器(二)
第1关:常用的专用过滤器packagestep1;importjava.io.IOException;importjavax.ws.rs.POST;importorg.apache.hadoop.cli.util.*;importorg.apache.hadoop.conf.*;importorg.apache.hadoop.hbase.*;importorg.apache.hadoop.hbase.client.*;importorg.apache.hadoop.hbase.filter.*;importorg.apache.hadoop.hbase.util.*;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.Cell;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.TableName;importorg.apache.hadoop.hbase.client.*;importorg.apache.hadoop.hbase.util.Bytes;importjava.io.IOException;publicclassTask{publicvoidquery(StringtName)throwsException{/*********Begin*********/Configurationconfig=newConfiguration();Connectionconn=ConnectionFactory.createConnection(config);TableNametableName=TableName.valueOf(Bytes.toBytes(test_tb1));Tabletable=conn.getTable(tableName);Filterfilter=newPrefixFilter(Bytes.toBytes(row5));Scanscan=newScan();scan.setFilter(filter);ResultScannerscanner=table.getScanner(scan);for(Resultresult:scanner){System.out.println(Bytes.toString(result.getRow()));for(Cellcell:result.listCells()){Stringfamily=Bytes.toString(CellUtil.cloneFamily(cell));Stringqualifier=Bytes.toString(CellUtil.cloneQualifier(cell));Stringvalue=Bytes.toString(CellUtil.cloneValue(cell));System.out.println(\t+family+:+qualifier++value);}}//分页byte[]POSTFIX=newbyte[]{0};Filterfilter1=newPageFilter(10);//构建过滤器并设置每页数据量inttotalRows=0;byte[]lastRow=null;inti=4;while(i0){Scanscan1=newScan();//添加过滤器scan1.setFilter(filter1);//设置查询的起始行if(lastRow!=null){byte[]startRow=Bytes.add(lastRow,POSTFIX);Stringinfo=newString(startRow,utf-8);System.out.println(开始分页查询);scan1.withStartRow(startRow);}ResultScannerscanner1=table.getScanner(scan1);intlocalRows=0;Resultresult;while((result=scanner1.next())!=null){System.out.println(Bytes.toString(result.getRow()));for(Cellcell:result.listCells()){Stringfamily=Bytes.toString(CellUtil.cloneFamily(cell));Stringqualifier=Bytes.toString(CellUtil.cloneQualifier(cell));Stringvalue=Bytes.toString(CellUtil.cloneValue(cell));System.out.println(\t+family+:+qualifier++value);}localRows++;totalRows++;lastRow=result.getRow();}scanner1.close();if(localRows==0)break;i--;}conn.close();/*********End*********/}}第2关:同时使用多种过滤器packagestep2;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importorg.apache.hadoop.cli.util.*;importorg.apache.hadoop.conf.*;importorg.apache.hadoop.hbase.*;importorg.apache.hadoop.hbase.client.*;importorg.apache.hadoop.hbase.filter.*;importorg.apache.hadoop.hbase.filter.SubstringComparator;importorg.apache.hadoop.hbase.util.*;publicclassTask{publicvoidquery(StringtName)throwsException{/*********Begin*********/Configurationconfig=newConfiguration();Connectionconn=ConnectionFactory.createConnection(config);TableNametableName=TableName.valueOf(test_tb2);Tabletable=conn.getTable(tableName);FilterregFilter=newRowFilter(CompareOperator.EQUAL,newRegexStringComparator(.*9$));FiltermoreThanFilter=newRowFilter(CompareOperator.GREATER,newBinaryComparator(Bytes.toBytes(row50)));ListFilterlist=newArrayList();list.add(regFilter);list.add(moreThanFilter);FilterListfilterList1=newFilterList(list);Scanscan1=newScan();scan1.setFilter(filterList1);ResultScannerscanner1=table.getScanner(scan1);for(Resultresult:scanner1){System.out.println(Bytes.toString(result.getRow()));for(Cellcell:result.listCells()){Stringfamily=Bytes.toString(CellUtil.cloneFamily(cell));Stringqualifier=Bytes.toString(CellUtil.cloneQualifier(cell));Stringvalue=Bytes.toString(CellUtil.cloneValue(cell));System.out.println(\t+family+:+qualifier++value);}}scanner1.close();//第二次查询FiltersubFilter=newRowFilter(CompareOperator.EQUAL,newSubstringComparator(93));FiltervalueFilter=newValueFilter(CompareOperator.EQUAL,newBinaryComparator(Bytes.toBytes(value10)));ListFilterlist2=newArrayList();list2.add(subFilter);list2.add(valueFilter);FilterListfilterList2=newFilterList(FilterList.Operator.MUST_PASS_ONE,list2);Scanscan2=newScan();scan2.setFilter(filterList2);ResultScannerscanner2=table.getScanner(scan2);for(Resultresult:scanner2){System.out.println(Bytes.toString(result.getRow()));for(Cellcell:result.listCells()){Stringfamily=Bytes.toString(CellUtil.cloneFamily(cell));Stringqualifier=Bytes.toString(CellUtil.cloneQualifier(cell));Stringvalue=Bytes.toString(CellUtil.cloneValue(cell));System.out.println(\t+family+:+qualifier++value);}}scanner2.close();conn.close();/*********End*********/}}第3关:过滤器总结第1题AE第2题D第3题E子串比较器的CompareOperator只能有EQUAL和NOT_EQUAL两种取值第4题BC
本文标题:educoder平台HBase高级特性:过滤器(二)
链接地址:https://www.777doc.com/doc-5388605 .html