HBase学习之API DDL操作

DDL:创建表在这里插入图片描述
代码

//创建表的方法
    public static void creatTable(String tableName,String... cfs){
        //1、判断是否存在列族信息
        if (cfs.length<=0){
            System.out.println("请设置列族信息");
        }
        //2、判定表是否存在
        else if (isTableExist(tableName)){
            System.out.println(tableName+"");
        }
        //3、创建表
        else {
            //这个方法要个表描述器,重载的还要二维byte数组
            //3.1创建表描述器
            HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
            //3.2循环添加列族信息
            for (String cf : cfs) {
                //3.3添加具体的列族信息
                //3.4要new一个列族描述器
                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
//                hColumnDescriptor.setVersions();//可以在建表的时候指定版本默认一个版本,针对于单个列族
                hTableDescriptor.addFamily(hColumnDescriptor);
            }
            try {
                //4、创建表
                admin.createTable(hTableDescriptor);//这里总结写代码的思路,上面的代码都是有这一行推出来的,写代码不能一味的从上往下写
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

测试:
 public static void main(String[] args) throws Exception{
        //创建表测试
        //先判定stu5是否存在
        System.out.println(isTableExist("stu5"));
        creatTable("stu5","info1","info2");
        //创建后再判定stu5是否存在
        System.out.println(isTableExist("stu5"));
        //关闭连接
        Utils.close(admin,connection);
    }

有了
在这里插入图片描述
删除表

//删除表
    public static void dropTable(String tableName){
        //1、判断表是否存在
        if (!isTableExist(tableName)){
            System.out.println(tableName+"表不存在!");
        }
        else {
            try {
                TableName dropTable = TableName.valueOf(tableName);
                //2、表下线
                admin.disableTable(dropTable);
                //3、表删除
                admin.deleteTable(dropTable);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

在这里插入图片描述
创建命名空间

//创建命名空间
    public static void creatNameSpace(String nameSpace){
        //系统并没有提供判断命名空间的方法,得抓异常判断
        //1、创建命名空间描述器
        //这个NamespaceDescriptor类的构造方法是私有的,不能直接new,得用静态内部内builder
        //这里的代码得从这个类里面找方法去写
        NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(nameSpace);//静态方法create
        NamespaceDescriptor build = builder.build();
        try {
            //2、创建命名空间
            admin.createNamespace(build);
        } catch (IOException e) {
            //根据重复创建的报错来抓异常:NamespaceExistException,这里这个异常不太行还是抓个大的吧
            System.out.println(nameSpace+"命名空间已存在");
        }
    }


测试:
 //创建命名空间测试
        creatNameSpace("0408");
        //在0408下创建一个表
        creatTable("0408:stu5","info1","info2");
        //关闭连接
        Utils.close(admin,connection);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值