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

hbase里在已有表中添加一个列族

最后修改后代码:

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

hbase里在已有表中添加一个列族