public static void createTable(Admin admin, String tableName, int splitCount,
    Map<String, String> tableOptions) throws IOException {
    Preconditions.checkArgument(splitCount > 0, "Split count must be greater than 0");
    TableDescriptorBuilder tableDescriptorBuilder =
      TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
    tableOptions.forEach(tableDescriptorBuilder::setValue);
    TableDescriptor tableDescriptor = tableDescriptorBuilder
      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(COLUMN_FAMILY)).build();
    // Pre-splitting table based on splitCount
    byte[][] splitKeys = new byte[splitCount][];
    for (int i = 0; i < splitCount; i++) {
      splitKeys[i] = String.format("%0" + Utility.SPLIT_PREFIX_LENGTH + "d", i + 1).getBytes();
    }
    admin.createTable(tableDescriptor, splitKeys);
  }
Creates a pre-splitted HBase Table having single column family ({@link #COLUMN_FAMILY}) and
sequential splits with {@link #SPLIT_PREFIX_LENGTH} length character prefix. Example: If a
table (TEST_TABLE_1) need to be generated with splitCount as 10, table would be created with
(10+1) regions with boundaries end-keys as (000000-000001, 000001-000002, 000002-000003, ....,
0000010-)
@param admin        - Admin object associated with HBase connection
@param tableName    - Name of table to be created
@param splitCount   - Number of splits for the table (Number of regions will be splitCount + 1)
@param tableOptions - Additional HBase metadata properties to be set for the table
hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/util/bulkdatagenerator/Utility.java