您好,登錄后才能下訂單哦!
2、Dedicated Filters
2.1 SingleColumnValueFilter √
2.2 SingleColumnValueExcludeFilter √
2.3 PrefixFilter √
2.4 PageFilter √
2.5 KeyOnlyFilter √
2.6 FirstKeyOnlyFilter √
2.7 TimestampsFilter ×
2.8 RandomRowFilter √
2.1 SingleColumnValueFilter
例子:Filter filter=new SingleColumnValueExcludeFilter(Bytes.toBytes(Family), Bytes.toBytes(Qualifier), CompareOp.EQUAL, Bytes.toBytes(Value));
2.2 SingleColumnValueExcludeFilter
使用:跟singlecolumnvaluefilter正好相反,這個是顯示表中除了過濾的這條以外的所有數(shù)據(jù)
例子:
Filter filter=new SingleColumnValueExcludeFilter(Bytes.toBytes(Family), Bytes.toBytes(Qualifier), CompareOp.EQUAL, Bytes.toBytes(Value)); ((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(true);
注意:!需要加((SingleColumnValueExcludeFilter) filter).setFilterIfMissing(true);
2.3 PrefixFilter 和ColumnPrefixFilter
使用:根據(jù)Row或Column的前綴取數(shù)據(jù)
例子:Filter filter=new PrefixFilter(Bytes.toBytes("r"));
取出RowKey以r開頭的所有數(shù)據(jù)
2.4 PageFilter
通過設(shè)置pageside返回每一頁page的數(shù)量
final byte[] POSTFIX = new byte[] { 0x00 }; HTable table; try { table = new HTable(config, tablename); Filter filter = new PageFilter(pageside); byte[] lastRow = null; int totalRows = 0; while (true) { Scan scan = new Scan(); scan.setFilter(filter); if(lastRow != null){ //注意這里添加了POSTFIX操作,不然死循環(huán)了 byte[] startRow = Bytes.add(lastRow,POSTFIX); scan.setStartRow(startRow); } ResultScanner scanner = table.getScanner(scan); int localRows = 0; Result result; while((result = scanner.next()) != null){ System.out.println(localRows++ + ":" + result); totalRows ++; lastRow = result.getRow(); } scanner.close(); if(localRows == 0) break; } System.out.println("total rows:" + totalRows); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
2.5 KeyOnlyFilter
* 一般與其他過濾器配合使用
* Filter:KeyOnlyFilter(boolean lenAsVal)
* lenAsVal默認為假,表示不把val的長度作為val。否則val的長度將作為val輸出。
* 鍵過濾器可以簡單的設(shè)置過濾的結(jié)果集中只包含鍵而忽略值,這里有一個選項可以把結(jié)果集的值保存為值的長度
例子:Filter filter = new KeyOnlyFilter(false);
2.6 firstkeyonlyFilter
用法:同上,但僅會返回相同key的第一條kv
2.8 RandomRowFilter
隨即的返回row的數(shù)據(jù),構(gòu)造函數(shù)為
RandomRowFilter(float chance)
chance取值為0到1.0,如果<0則為空,如果>1則包含所有的行。
例子:Filter filter=new RandomRowFilter(0.5f)
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。