You need to clear the values every time before you call rs.next otherwise the list will become larger and larger.
2017-12-10 15:05 GMT+08:00 Yang Zhang <[email protected]>: > Hello everyone > > I am using coprocessor in HBase. When I try to Scan a Region using > RegionScanner , It will takes a long time. Even 100 times longer than Scan > from HBase shell. So I believe there must be something wrong. > > What's more, HBase will also give no response when I try to disable > this table and try to delete. > > My HBase version is 0.98.4,,Table row number is 500000,all data is > in one region.I do this in preScannerOpen hooks. > > My code is below,Anybody can help? Thanks very much! > > private void testScan(String regionInfo, RegionCoprocessorEnvironment > env,RegionScanner regionScanner){ > IndexTree indexTree = new JavaTreeMap(new Node()); > regionIndexMap.put(regionInfo, indexTree); > Scan scan = new Scan(); > scan.setFilter(new FirstKeyOnlyFilter()); > > long totalNum = 0; > long start = System.currentTimeMillis(); > > try { > RegionScanner rs = env.getRegion().getScanner(scan); > List<Cell> values = new LinkedList<>(); > while (rs.next(values)){ > totalNum++; > } > } catch (IOException e) { > e.printStackTrace(); > } > long end = System.currentTimeMillis(); > logger.error("==== TestScanAllRegion Cost :"+(end-start)+" > RegionNum :"+totalNum); > } >
