package meetup.beeno; import java.io.IOException; import meetup.beeno.mapping.EntityInfo; import meetup.beeno.util.HUtil; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.Filter; import org.apache.log4j.Logger; public class ScanNoIndex implements QueryStrategy { private static Logger log = Logger.getLogger(ScanNoIndex.class); private final EntityInfo info; private final QueryOpts opts; private final Filter baseFilter; public ScanNoIndex( EntityInfo entityInfo, QueryOpts opts, Filter baseFilter ) { this.info = entityInfo; this.opts = opts; this.baseFilter = baseFilter; } @Override public ResultScanner createScanner() throws QueryException { ResultScanner scanner = null; Scan scan = new Scan(); HTable table = null; try { table = HUtil.getTable(info.getTablename()); scan.setFilter(baseFilter); log.debug("Using filter: "+baseFilter); if (opts.getStartKey() != null) scan.setStartRow(opts.getStartKey()); if (opts.getStopKey() != null) scan.setStopRow(opts.getStopKey()); long t1 = System.nanoTime(); scanner = table.getScanner(scan); long t2 = System.nanoTime(); log.info(String.format("HBASE TIMER: created scanner in %f msec.", ((t2-t1)/1000000.0))); } catch (IOException ioe) { throw new QueryException(ioe); } finally { HUtil.releaseTable(table); } return scanner; } }