PrefixFilter是將rowkey前綴爲指定字符串的數據所有過濾出來並返回給用戶。例如:java
Scan scan = new Scan(); scan.setFilter(new PrefixFilter(Bytes.toBytes("def")));
可是hbase的PrefixFilter比較粗暴,並無根據filter作過多的查詢優化。上述代碼會scan整個區間的數據,獲得一條數據就判斷其是否符合前綴條件,不符合就讀嚇一條,直到找到前綴爲def的數據。所以,咱們能夠指定一下startkey。優化
Scan scan = new Scan();scan.setStartRow(Bytes.toBytes("def")); scan.setFilter(new PrefixFilter(Bytes.toBytes("def")));