Index: src/main/java/org/apache/hadoop/hbase/mapreduce/RowCounter.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/mapreduce/RowCounter.java (revision 1195042) +++ src/main/java/org/apache/hadoop/hbase/mapreduce/RowCounter.java (working copy) @@ -70,6 +70,8 @@ } } + static final String SCAN_CACHING = "caching"; + /** * Sets up the actual job. * @@ -98,7 +100,22 @@ for (String columnName :sb.toString().split(" ")) { String [] fields = columnName.split(":"); if(fields.length == 1) { - scan.addFamily(Bytes.toBytes(fields[0])); + // see if this argument contains scanner attributes + String[] scanAttr = columnName.split(";"); + if (scanAttr.length == 1) { + scan.addFamily(Bytes.toBytes(fields[0])); + } else { + if (SCAN_CACHING.equalsIgnoreCase(scanAttr[0])) { + int caching = 50; + try { + caching = Integer.parseInt(scanAttr[1]); + } catch (NumberFormatException nfe) { + System.err.println("ERROR: invalid scanner caching specified: " + + scanAttr[1]); + } + scan.setCaching(caching); + } + } } else { scan.addColumn(Bytes.toBytes(fields[0]), Bytes.toBytes(fields[1])); } @@ -123,7 +140,11 @@ String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length < 1) { System.err.println("ERROR: Wrong number of parameters: " + args.length); - System.err.println("Usage: RowCounter [ ...]"); + System.err.println( + "Usage: RowCounter [] [ ...]"); + System.err.println(" where specifies attributes for Scan"); + System.err.println(" e.g. you can specify the number of rows for caching"); + System.err.println(" by using caching:70"); System.exit(-1); } Job job = createSubmittableJob(conf, otherArgs);