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.csdn.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.csdn.net/HYDMonster/article/details/80005045


要在HBase中创建至少有两个列族包含两个列限定符,可以使用HBase shell或HBase API中的create命令。以下是使用HBase shell创建表并添加列族和列限定符的示例命令: 1. 首先,打开HBase shell并选择要创建表的命名空间: ``` $ hbase shell hbase> create_namespace 'my_namespace' hbase> use_namespace 'my_namespace' ``` 2. 然后,使用create命令创建表并指定列族和列限定符: ``` hbase(my_namespace)> create 'my_table', {NAME => 'cf1', VERSIONS => 1}, {NAME => 'cf2', VERSIONS => 1}, {NAME => 'cf3', VERSIONS => 1}, {NAME => 'cf4', VERSIONS => 1} ``` 此命令将在表“my_table”中创建四个列族:“cf1”、“cf2”、“cf3”和“cf4”,每个列族都有一个名为“col1”的列限定符和一个名为“col2”的列限定符。 3. 如果需要在已存在的表中添加列族和列限定符,则可以使用alter命令: ``` hbase(my_namespace)> alter 'my_table', {NAME => 'cf5', VERSIONS => 1}, {NAME => 'cf6', VERSIONS => 1} hbase(my_namespace)> alter 'my_table', 'addColumn', {NAME => 'cf5', VERSIONS => 1}, {NAME => 'cf6', VERSIONS => 1} ``` 第一行命令将在表“my_table”中添加两个新列族:“cf5”和“cf6”,每个列族都有一个版本限制为1。第二行命令将在表“my_table”的现有列族添加一个名为“col3”的列限定符和一个名为“col4”的列限定符。 注意:在HBase中,每个列族可以包含多个列限定符。在上面的示例中,我们仅为每个列族定义了两个列限定符。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值