hbase2.1.x java 表是否存在、创建表

上接:hbase2.1.x java 创建工程

java

创建表

先判断 表是否存在,不存在就创建表

/**
 * 创建表
 * @param tableName 表名
 * @param columnFamily 列族名
 * @return true:表示创建成功;false:表示表已存在
 * @throws IOException
 */
public boolean createTable(String tableName,String columnFamily) throws IOException{
    boolean ret = false;
    TableName tableNameObj = TableName.valueOf(tableName);
    // 创建admin对象,判断表是否存在,创建表、禁用表、删除表
    Admin admin = conn.getAdmin();
    if(admin.tableExists(tableNameObj)){
        ret = false;
    }else {
        //创建表描述构造器,创建表时,可以设置很多配置
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(tableNameObj);
        //创建列族描述构造器,创建表时,可以设置很多配置
        //在hbase中,数据是以 byte[] 存储的,所以需要做转换
        ColumnFamilyDescriptorBuilder cfdb = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));
        //创建列族描述对象
        ColumnFamilyDescriptor cfd = cfdb.build();
        //将列族描述对象传入表描述构造器
        tableDescriptorBuilder.setColumnFamily(cfd);
        //创建表描述对象
        TableDescriptor td = tableDescriptorBuilder.build();
        //创建表
        admin.createTable(td);
        ret = true;
    }
    admin.close();
    return ret;
}

main方法

public static void main(String[] args)  {
    HbaseUtils to=new HbaseUtils();

    try {
        to.connect();

        System.out.println("connect success!");
        //创建book表
        boolean b = to.createTable("book", "c1");
        if (b) {
            System.out.println("create table ok!");
        } else {
            System.out.println("table is exists!");
        }
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        try {
            to.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}

原文出处:/show_1IX1wM1jysMb.html