2
我遇到了使用Java API截斷HBase表的意外行爲。具體而言,我做以下操作:HBase:通過Java API截斷表使表被截斷
- 禁用表
- 截斷表
- 啓用表
對應於這些操作的代碼如下:
Configuration conf = HBaseConfiguration.create();
// ...
// Setting properly the configuration information
// ...
try (HBaseAdmin admin = new HBaseAdmin(conf)) {
if (admin.isTableEnabled(TABLE_NAME)) {
admin.disableTable(TABLE_NAME);
}
admin.truncateTable(TableName.valueOf(TABLE_NAME), false);
// Enabling the table after having truncated
admin.enableTable(TABLE_NAME);
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
現在,截斷操作之後的語句admin.enableTable(TABLE_NAME)
將拋出一個org.apache.hadoop.hbase.TableNotDisabledException
。這是對的嗎?通過Java API截斷表重新啓用它自動?
我檢查了API,但沒有找到任何對此行爲的參考。
我正在使用HBase,版本1.0.0-cdh5.5.0。