更新时间: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应用