2016-02-18 19 views
3

我試圖截斷HBase的表用簡單的Java代碼:截斷HBase的表與Java在Hadoop中2.7.1

HBaseAdmin hbaseAdmin = new HBaseAdmin(new HadoopConfig()); 

,但我得到 「java.lang.reflect.InvocationTargetException」。 我看到HBaseAdmin構造函數已被棄用。

它用Hadoop 2.2.0

回答

2

得手,這是解決方案:

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()); 
    } 
2

找到下面的代碼片段截斷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(); 

希望這有助於!

+0

謝謝!現在我沒有得到Invocation異常,但是「org.apache.hadoop.hbase.TableNotDisabledException」。 – EliranA

+2

我在截斷之前禁用了表併成功了。我會尋找一種方法來做到這一點,而不用自己禁用它。 – EliranA