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();
}
}
}