protected <T> T executeParallelDistributedScan0(TableName tableName, Scan scan, AbstractRowKeyDistributor rowKeyDistributor, ResultsExtractor<T> action, int numParallelThreads) {
        try {
            StopWatch watch = StopWatch.createStarted();
            final boolean debugEnabled = logger.isDebugEnabled();

            try (ParallelResultScanner scanner = new ParallelResultScanner(tableName, this, this.executor, scan, rowKeyDistributor, numParallelThreads)) {
                if (debugEnabled) {
                    logger.debug("ParallelDistributedScanner createTime: {}ms", watch.stop());
                    watch.start();
                }
                return action.extractData(scanner);
            } finally {
                if (debugEnabled) {
                    logger.debug("ParallelDistributedScanner scanTime: {}ms", watch.stop());
                }
            }
        } catch (Throwable th) {
            Throwable throwable = th;
            if (th instanceof ScanTaskException) {
                throwable = th.getCause();
            }
            return HBaseExceptionUtils.rethrowHbaseException(throwable);
        }
    }
@author emeroad
@author HyunGil Jeong
@author minwoo.jung
@author Taejin Koo
commons-hbase/src/main/java/com/navercorp/pinpoint/common/hbase/HbaseTemplate.java