更新时间:2024-12-10 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
修改HBase表
功能简介
HBase通过org.apache.hadoop.hbase.client.Admin的modifyTable方法修改表信息。
代码样例
以下代码片段在com.huawei.bigdata.hbase.examples包的“HBaseExample”类的testModifyTable方法中。
public void testModifyTable() {
    LOG.info("Entering testModifyTable.");
    // Specify the column family name.
    byte[] familyName = Bytes.toBytes("education");
    Admin admin = null;
    try {
        // Instantiate an Admin object.
        admin = conn.getAdmin();
        // Obtain the table descriptor.
        TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName).build();
        // Check whether the column family is specified before modification.
        if (!htd.hasColumnFamily(familyName)) {
            // Create the column descriptor.
         ColumnFamilyDescriptor cfd = ColumnFamilyDescriptorBuilder.of(familyName);
         TableDescriptor td = TableDescriptorBuilder.newBuilder(admin.getDescriptor(tableName)).setColumnFamily(cfd).build();
            // Disable the table to get the table offline before modifying
            // the table.
            admin.disableTable(tableName);//注[1]
            // Submit a modifyTable request.
            admin.modifyTable(td);
            // Enable the table to get the table online after modifying the
            // table.
            admin.enableTable(tableName);
        }
        LOG.info("Modify table successfully.");
    } catch (IOException e) {
        LOG.error("Modify table failed ", e);
    } finally {
        if (admin != null) {
            try {
                // Close the Admin object.
                admin.close();
            } catch (IOException e) {
                LOG.error("Close admin failed ", e);
            }
        }
    }
    LOG.info("Exiting testModifyTable.");
}
 
 
  注[1]modifyTable只有表被disable时,才能生效。
   父主题: 开发HBase应用