I think that clients should have the ability to configure the scanner caching setting on a per-scan basis via the org.apache.hadoop.hbase.client.Scan object. I propose adding a new caching property to the Scan class which would override the HTable.scannerCaching property if set. This would turn the HTable.scannerCaching property into more of a default setting.
The code inside ClientScanner (an inner-class implementation of ResultScanner) would look like this:
Note that currently the only option for per-scan scanner caching configuration is to modify the state of HTable for each Scan. This could lead to confusion when HTables are pooled since the pool would potentially end up with many HTables all configured differently.
I will attach a patch. I'm looking forward to hearing your comments.