hbase创建表格的API,使用Java编写API让我们操作表格更加方便快捷。
创建表格的流程图:
编写代码:
public static void createTables(String namespace,String tablename,String... columnFamilys) throws IOException {
//1.获取admin
Admin admin = connection.getAdmin();
//2.调用方法创建表格
//2.1创建表格的建造者
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(namespace,tablename));
//2.2添加参数的建造者
for (String columnFamily : columnFamilys) {
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));
//2.3添加版本参数
columnFamilyDescriptorBuilder.setMaxVersions(5);
//2.4创建参数的列族的信息
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 {
//创建atguigu命名空间
// createNamespace("atguigu");
/*
* 判断命名空间是否存在
* */
// System.out.println(isTableExists("haolin","student"));
//测试创建表格
createTables("atguigu","student","info1","info2");
System.out.println("判断是否运行到此处");
//关闭HBASE连接
HbaseConnection.closeconnection();
}
}
运行结果:
但是在当前代码下,因为列族是可变参数,当没有设置列族,那么他就会报错,那么之前就需要判断是否至少有一个列族。
if(columnFamily.length==0){
System.out.println("创建表格至少要存在一个列族!!!!");
return;
}
这样一来就增加了我们API的健壮性。