hbase 创建命名空间以及判断表格是否存在 创建表格

public class HbaseDDL {
    public static Connection connection = DButil.getConnection();

    //创建命名空间

    /**
     * 创建命名空间
     * @param namespace 命名空间名称
     */
    public static void Creatnamespace(String namespace){
        //获取admin
        Admin admin = null;
        try {
            admin = connection.getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //2调用方法创建命名空间
        //2.1创建命名空间描述的建造者 =>设计师
        NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(namespace);

        //2.2给建造者添加需求

        builder.addConfiguration("user","baigeihan");

        //2.3使用builder构造出特定的对象

        try {
            admin.createNamespace(builder.build());
        } catch (IOException e) {
            System.out.println("命名空间已经存在");
            e.printStackTrace();
        }
        //关闭admin

        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * 判断表格是否存在
     * @param namespace 命名空间名称
     * @param tablename 表格名称
     * @return 是否存在
     */

    public static boolean isTableExists(String namespace,String tablename) throws IOException {
        //1.创建admin

        Admin admin = connection.getAdmin();

        //2.使用方法判断表格是否存在
        boolean b = false;
        try {
            b = admin.tableExists(TableName.valueOf(namespace, tablename));
        } catch (IOException e) {

            e.printStackTrace();
        }

        //3.关闭连接
        admin.close();

        return b;


    }

    /**
     * 创建表格
     * @param namespace 命名空间
     * @param tablename 表格名称
     * @param columnFamiles 列族
     */
    public static void Createtable(String namespace,String tablename,String... columnFamiles) throws IOException {
        //判断列族个数
        if(columnFamiles.length == 0){
            System.out.println("列族至少要有一个");
            return;
        }
        //判断表哥是否存在

        if (isTableExists(namespace,tablename)){
            System.out.println("表格已经存在");
            return;
        }

        //1.获取admim
        Admin admin = connection.getAdmin();

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

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

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

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

        }
        //创建对应的表格描述
        try {
            admin.createTable(tableDescriptorBuilder.build());
        } catch (IOException e) {
            System.out.println("表格已经存在");
            e.printStackTrace();
        }

        admin.close();

    }

    public static void main(String[] args) throws IOException {
        Createtable("one","student","info","msg");
    }

}

 

posted @ 2022-09-22 16:54  软工小蜗牛  阅读(330)  评论(0编辑  收藏  举报