Работа сканера заключается в запуске первого региона, сканировании строк и переходе от одного региона к другому. Уловка, которую вы можете сделать, - это создать несколько сканеров, каждый из которых начинается и заканчивается на ключах начала и конца одного региона, а затем создавать несколько потоков, которые читают из всех параллельно и записывают в одну очередь вывода. Теперь ваш процесс должен быть достаточно быстрым, чтобы считывать, обрабатывать и удалять элементы из этой очереди, в противном случае вы можете OOM-клиент, если слишком много строк поступает слишком быстро. Вам также нужно будет использовать параллельные структуры, чтобы избежать задержек синхронизации.
Вы можете получить информацию о регионе, используя getRegionLocations на HTable:
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#getRegionLocations()
Также имейте в виду, что сканеры могут отключаться по таймауту, если вы не читаете их достаточно быстро, поэтому блокирование потоков потребителей до тех пор, пока ваша очередь не станет пустой, иногда может оказаться невозможным.