The following sentence in the BatchScanner Javadoc has confused my colleagues into using Scanners and wondering why performance doesn't scale.
If you want to lookup a few ranges and expect those ranges to contain a lot of data, then use the Scanner instead.
Also regarding this next sentence, from what I see of the BatchScanner it will break up "large Range objects" that span multiple extents (tablets) into multiple ranges, possibly one for each tablet.
Use this when looking up lots of ranges and you expect each range to contain a small amount of data.
If the client is okay with unsorted order and it is okay with using multiple threads, then isn't it always a better decision to use a BatchScanner than regular Scanner? In the worst case, one Range over a single row, the BatchScanner will perform the same as a regular Scanner, ya?