public static void moveSpecifiedFilesInParallel(Configuration conf, FileSystem fs,
      Path srcPath, Path destPath, Set<String> filesToMove)
      throws HiveException, IOException {

    LOG.info("rename {} files from {} to dest {}",
        filesToMove.size(), srcPath, destPath);
    PerfLogger perfLogger = SessionState.getPerfLogger();
    perfLogger.perfLogBegin("FileSinkOperator", "moveSpecifiedFileStatus");

    final ExecutorService pool = createMoveThreadPool(conf);

    List<Future<Void>> futures = new LinkedList<>();
    moveSpecifiedFilesInParallel(fs, srcPath, destPath, filesToMove, futures, pool);

    shutdownAndCleanup(pool, futures);
    LOG.info("Completed rename from {} to {}", srcPath, destPath);

    perfLogger.perfLogEnd("FileSinkOperator", "moveSpecifiedFileStatus");
  }
move specified files to destination in parallel mode.
Spins up multiple threads, schedules transfer and shuts down the pool.

@param conf
@param fs
@param srcPath
@param destPath
@param filesToMove
@throws HiveException
@throws IOException
ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java