private Map<LoadQueueItem, ByteBuffer> doBulkLoad(AsyncClusterConnection conn,
    TableName tableName, Map<byte[], List<Path>> map, boolean silence, boolean copyFile)
    throws IOException {
    tableExists(conn, tableName);
    // LQI queue does not need to be threadsafe -- all operations on this queue
    // happen in this thread
    Deque<LoadQueueItem> queue = new ArrayDeque<>();
    ExecutorService pool = null;
    try {
      prepareHFileQueue(conn, tableName, map, queue, silence);
      if (queue.isEmpty()) {
        LOG.warn("Bulk load operation did not get any files to load");
        return Collections.emptyMap();
      }
      pool = createExecutorService();
      return performBulkLoad(conn, tableName, queue, pool, copyFile);
    } finally {
      cleanup(conn, tableName, queue, pool);
    }
  }
Perform a bulk load of the given map of families to hfiles into the given pre-existing table.
This method is not threadsafe.
@param map       map of family to List of hfiles
@param tableName table to load the hfiles
@param silence   true to ignore unmatched column families
@param copyFile  always copy hfiles if true
hbase-server/src/main/java/org/apache/hadoop/hbase/tool/BulkLoadHFilesTool.java