hbase里在已有表中添加一个列族
在看了书上API后我以为添加一个列族是这样的
public void addAFamily(String tableName,String familyName) throws IOException{
init();
Table table=connection.getTable(TableName.valueOf(tableName));
HTableDescriptor hDescriptor= table.getTableDescriptor();
HColumnDescriptor hColumnDescriptor=new HColumnDescriptor(familyName);
hDescriptor.addFamily(hColumnDescriptor);
close();
}
然后我也没试它的效果我就直接拿来用了,结果是
看到这个错,很懵逼,我还以为是静态函数的问题,然后又去调那个函数,发现根本不对。然后去网上找了下addFamily的用法,发现了一些问题,解决办法请参考https://blog.****.net/lr131425/article/details/72621562
最后修改后代码:
public void addAFamily(String tableName,String familyName) throws IOException{
init();
TableName tablename=TableName.valueOf(tableName);
admin.disableTable(tablename);
HTableDescriptor hDescriptor= admin.getTableDescriptor(tablename);
HColumnDescriptor hColumnDescriptor=new HColumnDescriptor(familyName);
hDescriptor.addFamily(hColumnDescriptor);
admin.modifyTable(tablename, hDescriptor);
admin.enableTable(tablename);
close();
}
注:admin是定义在类开头的静态变量,不知道的请参考我这一章的代码https://blog.****.net/HYDMonster/article/details/80005045