public class HBaseDDL {

    //声明一个静态属性
    static public Connection conn = HBaseConnection2.conn;


    /**
     * 创建命名空间
     *
     * @param namespcae 命名空间名称
     */
    public static void createNamespace(String namespcae) throws IOException {
        //1. 获取admin
        Admin admin = conn.getAdmin();

        //2.调用方法创建命名空间
        //代码相对shell更加底层  所以shell能够实现的功能  代码一定能实现
        //所以要填写完整的命名空间描述

        //2.1 创建命名空间描述建造者
        NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(namespcae);

        //2.2 给命名空间添加需求
        builder.addConfiguration("user", "Superchen");

        //2.3 使用builder构造出对应的添加完参数的对象  完成创建
        admin.createNamespace(builder.build());

        //3. 关闭admin
        admin.close();
    }


    /**
     * +
     *
     * @param namespace      命名空间名称
     * @param tableName      表格名称
     * @param columnFamilies 列族名称 可以有多个
     */
    public static void createTable(String namespace, String tableName, String... columnFamilies) throws IOException {
        //1. 获取admin
        Admin admin = conn.getAdmin();

        //2. 创建表格
        //2.1 创建表格描述的建造者
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(namespace, tableName));

        //2.2 添加参数
        for (String columnFamily : columnFamilies) {
            //2.3 创建列族描述的建造者
            ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));

            //2.4 对应当前的列族添加参数
            //添加版本参数
            columnFamilyDescriptorBuilder.setMaxVersions(5);

            //2.5 创建添加完参数的列族描述
            tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());
        }

        //2.3创建对应的表格描述
        admin.createTable(tableDescriptorBuilder.build());

        //3. 关闭admin
        admin.close();
    }


    //------------------------------------------------------------------------------------------------------------------
    public static void main(String[] args) throws IOException {
        //创建命名空间
//        createNamespace("test1");
//        HBaseConnection2.closeConnection();

        //创建表格
        createTable("test1", "Contract", "info");
        HBaseConnection2.closeConnection();


    }
}