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