Hello, Any info about specific numbers (number of regions vs response time, etc) will help.
Btw, for rowcount, you should use FirstKeyOnlyFilter. And in your code, you should add a callback to sum individual Region side results (though that is not related to response time, but with your rowcount final result). Thanks, Himanshu On Wed, Mar 21, 2012 at 2:48 AM, raghavendhra rahul <[email protected]> wrote: > This is my coprocessor end point > > public class RowcountEndpoint extends BaseEndpointCoprocessor implements > RowcountProtocol { > > @Override > public long getRowcount() throws IOException { > Scan scan = new Scan(); > scan.setCaching(100); > scan.setCacheBlocks(false); > RegionCoprocessorEnvironment env = > (RegionCoprocessorEnvironment)getEnvironment(); > InternalScanner scanner = env.getRegion().getScanner(scan); > long result = 0; > try{ > List<KeyValue> val = new ArrayList<KeyValue>(); > boolean done = false; > do{ > val.clear(); > done = scanner.next(val); > result+=1; > }while(done); > } > finally{ > scanner.close(); > } > return result; > } > } > > > This is my client > > public class RowClient { > public Map<byte[], Long> getcount(String name) throws Throwable { > > Configuration conf = HBaseConfiguration.create(); > HTable table = new HTable(conf, name); > Map<byte[], Long> res; > try { > res = table.coprocessorExec(RowcountProtocol.class, null, null, > new Batch.Call<RowcountProtocol, Long>() { > @Override > public Long call(RowcountProtocol counter) > throws IOException { > return counter.getRowcount(); > } > }); > } finally { > > } > return res; > }
