2015-08-24 58 views
2

我使用CDH 5.4.2,並試圖創建HBase的表有下面的代碼片段:錯誤:構造htable(配置字符串)已被棄用

 Configuration conf = HBaseConfiguration.create(new Configuration()); 
     HBaseAdmin hba = new <strike>HBaseAdmin</strike>(conf); 
     if(!hba.tableExists(args[0])){ 
      HTableDescriptor ht = new  <strike>HTableDescriptor</strike> (args[0]); 
      ht.addFamily(new HColumnDescriptor("sample")); 

有一個Deprecated錯誤。

  • 如何避免這些警告?
  • 我需要爲 CDH 5.4.2添加任何特定的罐子嗎?

回答

4

這只是一個警告。但是你不應該在你的代碼中使用被棄用的方法。

在地方:

HBaseAdmin admin = new HBaseAdmin(conf); 

你應該使用:

Connection conn =ConnectionFactory.createConnection(conf); 
Admin admin = conn.getAdmin(); 
4

示例代碼,供大家參考。假設你的Hbase以獨立模式運行。

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.HColumnDescriptor; 
import org.apache.hadoop.hbase.HTableDescriptor; 
import org.apache.hadoop.hbase.TableName; 
import org.apache.hadoop.hbase.client.Admin; 
import org.apache.hadoop.hbase.client.Connection; 
import org.apache.hadoop.hbase.client.ConnectionFactory; 

public class HBaseSample { 

    public static void main(String[] args) { 
     Configuration conf = HBaseConfiguration.create(); 
     try {   
      Connection conn = ConnectionFactory.createConnection(conf); 
      Admin hAdmin = conn.getAdmin(); 

      HTableDescriptor hTableDesc = new HTableDescriptor(
        TableName.valueOf("Customer")); 
      hTableDesc.addFamily(new HColumnDescriptor("name")); 
      hTableDesc.addFamily(new HColumnDescriptor("contactinfo")); 
      hTableDesc.addFamily(new HColumnDescriptor("address")); 

      hAdmin.createTable(hTableDesc); 

      System.out.println("Table created Successfully..."); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

'hAdmin.close()' - 有必要關閉管理員 –

相關問題