3
我試圖截斷HBase的表用簡單的Java代碼:截斷HBase的表與Java在Hadoop中2.7.1
HBaseAdmin hbaseAdmin = new HBaseAdmin(new HadoopConfig());
,但我得到 「java.lang.reflect.InvocationTargetException」。 我看到HBaseAdmin構造函數已被棄用。
它用Hadoop 2.2.0
我試圖截斷HBase的表用簡單的Java代碼:截斷HBase的表與Java在Hadoop中2.7.1
HBaseAdmin hbaseAdmin = new HBaseAdmin(new HadoopConfig());
,但我得到 「java.lang.reflect.InvocationTargetException」。 我看到HBaseAdmin構造函數已被棄用。
它用Hadoop 2.2.0
得手,這是解決方案:
Admin admin = null;
Configuration config = HBaseConfiguration.create();
// Add custom config parameters here
Connection connection = ConnectionFactory.createConnection(config);
try {
admin = connection.getAdmin();
for (String tableName : tableNames) {
System.out.print("Truncate table " + tableName);
try {
if (HBaseHelper.isTableExists(tableName)) {
if (admin.isTableDisabled(TableName.valueOf(tableName))) {
System.out.print("Table " + tableName + " was disabled. Enabling it...");
admin.enableTable(TableName.valueOf(tableName);
}
HBaseHelper.truncateTable(tableName);
}
}
catch (IOException e) {
System.out.print("Failed to truncate table " + tableName + "\nError Msg: " + e.getMessage());
}
}
} catch (Exception e){
System.out.print("Could not connect to HBase Admin. Error Msg: " + e.getMessage());
}
找到下面的代碼片段截斷HBase的表在Java代碼中工作得很好,
Configuration config = HBaseConfiguration.create();
// Add custom config parameters here
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin()
admin.truncateTable(TableName.valueOf("bigtable");
admin.close();
希望這有助於!
謝謝!現在我沒有得到Invocation異常,但是「org.apache.hadoop.hbase.TableNotDisabledException」。 – EliranA
我在截斷之前禁用了表併成功了。我會尋找一種方法來做到這一點,而不用自己禁用它。 – EliranA