1. 程式人生 > >Hbase基本操作示例

Hbase基本操作示例

Hadoop Hbase通過行關鍵字、列(列族名:列名)和時間戳的三元組確定一個儲存單元(cell),即由

{row key, column family, column name, timestamp} 可以唯一確定一個儲存值,即一個鍵值對:

{row key, column family, column name, timestamp} -> value

下面演示了Hbase的基本操作。包括

1、建立表

2、刪除表

3、新增記錄

4、刪除記錄

5、查詢記錄等

忘記的時候可以過來看看。

  1. import java.io.IOException;  
  2. import
     java.util.ArrayList;  
  3. import java.util.List;  
  4. import org.apache.hadoop.conf.Configuration;  
  5. import org.apache.hadoop.hbase.HBaseConfiguration;  
  6. import org.apache.hadoop.hbase.HColumnDescriptor;  
  7. import org.apache.hadoop.hbase.HTableDescriptor;  
  8. import org.apache.hadoop.hbase.KeyValue;  
  9. import
     org.apache.hadoop.hbase.client.Delete;  
  10. import org.apache.hadoop.hbase.client.Get;  
  11. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  12. import org.apache.hadoop.hbase.client.HTable;  
  13. import org.apache.hadoop.hbase.client.Put;  
  14. import org.apache.hadoop.hbase.client.Result;  
  15. import org.apache.hadoop.hbase.client.ResultScanner;  
  16. import org.apache.hadoop.hbase.client.Scan;  
  17. publicclass HBaseOperation {  
  18.     // 相關屬性
  19.     private Configuration conf;  
  20.     private HBaseAdmin admin;  
  21.     public HBaseOperation(Configuration conf) throws IOException {  
  22.         this.conf = HBaseConfiguration.create(conf);  
  23.         this.conf.set("hbase.zookeeper.quorum""namenode");  
  24.         this.conf.set("hbase.zookeeper.property.clientPort""2181");  
  25.         this.admin = new HBaseAdmin(this.conf);  
  26.     }  
  27.     public HBaseOperation() throws IOException {  
  28.         Configuration cnf = new Configuration();  
  29.         this.conf = HBaseConfiguration.create(cnf);  
  30.         this.conf.set("hbase.zookeeper.quorum""namenode");  
  31.         this.conf.set("hbase.zookeeper.property.clientPort""2181");  
  32.         this.admin = new HBaseAdmin(this.conf);  
  33.     }  
  34.     /** 
  35.      * 建立表 
  36.      * @param tableName     表名 
  37.      * @param colFamilies   <span style="white-space:pre">    </span>列族 
  38.      * @throws IOException 
  39.      */
  40.     publicvoid createTable(String tableName, String colFamilies[])  
  41.             throws IOException {  
  42.         if (this.admin.tableExists(tableName)) { // 表已經存在
  43.             System.out.println("Table: " + tableName + " already exists !");  
  44.             this.admin.deleteTable(tableName); // 刪除表
  45.         }  
  46.         HTableDescriptor dsc = new HTableDescriptor(tableName); // 新建表描述
  47.         int len = colFamilies.length;  
  48.         for (int i = 0; i < len; i++) {  
  49.             HColumnDescriptor family = new HColumnDescriptor(colFamilies[i]);  
  50.             dsc.addFamily(family); // 在表描述中新增列族
  51.         }  
  52.         admin.createTable(dsc); // 建立表
  53.         System.out.println("create table " + tableName + " ok.");  
  54.     }  
  55.     /** 
  56.      * 刪除一張表 
  57.      * @param tableName 
  58.      * @throws IOException 
  59.      */
  60.     publicvoid deleteTable(String tableName) throws IOException {  
  61.         if (this.admin.tableExists(tableName)) {  
  62.             admin.disableTable(tableName);  
  63.             admin.deleteTable(tableName);  
  64.             System.out.println("delete table " + tableName + " ok.");  
  65.         } else {  
  66.             System.out.println("Table Not Exists !");  
  67.         }  
  68.     }  
  69.     /** 
  70.      * 新增記錄 
  71.      * @param tableName  表名字 
  72.      * @param rowkey     行關鍵字 
  73.      * @param family     列族 
  74.      * @param qualifier 列名 
  75.      * @param value     值 
  76.      * @throws IOException 
  77.      */
  78.     publicvoid insertRecord(String tableName, String rowkey, String family,  
  79.             String qualifier, String value) throws IOException {  
  80.         HTable table = new HTable(this.conf, tableName);  
  81.         Put put = new Put(rowkey.getBytes());  
  82.         put.add(family.getBytes(), qualifier.getBytes(), value.getBytes());  
  83.         table.put(put);  
  84.         System.out.println("insert recored " + rowkey + " to table "
  85.                 + tableName + " ok.");  
  86.         table.close();  
  87.     }  
  88.     /** 
  89.      * 新增一組記錄 
  90.      * @param tableName 
  91.      * @param putList 
  92.      * @throws IOException 
  93.      */
  94.     publicvoid insertRecordList(String tableName, List<Put> putList)  
  95.             throws IOException {  
  96.         HTable table = new HTable(this.conf, tableName);  
  97.         for (int i = 0; i < putList.size(); i++) {  
  98.             Put put = putList.get(i);  
  99.             table.put(put);  
  100.         }  
  101.         putList.clear();  
  102.         table.close();  
  103.     }  
  104.     /** 
  105.      * 刪除一行資料 
  106.      * @param tableName 表名 
  107.      * @param rowkey    行關鍵字 
  108.      * @throws IOException 
  109.      */
  110.     publicvoid deleteRecord(String tableName, String rowkey)  
  111.             throws IOException {  
  112.         HTable table = new HTable(this.conf, tableName);  
  113.         Delete del = new Delete(rowkey.getBytes());  
  114.         table.delete(del);  
  115.         System.out.println("del recored " + rowkey + " ok.");  
  116.         table.close();  
  117.     }  
  118.     /** 
  119.      * 獲取一條記錄 
  120.      * @param tableName 表名 
  121.      * @param rowkey    行關鍵字 
  122.      * @return 
  123.      * @throws IOException 
  124.      */
  125.     public Result getOneRecord(String tableName, String rowkey)  
  126.             throws IOException {  
  127.         HTable table = new HTable(this.conf, tableName);  
  128.         Get get = new Get(rowkey.getBytes());       //get物件
  129.         Result rs = table.get(get);  
  130.         for (KeyValue kv : rs.raw()) {  
  131.             System.out.print(new String(kv.getRow()) + " ");  
  132.             System.out.print(new String(kv.getFamily()) + ":");  
  133.             System.out.print(new String(kv.getQualifier()) + " ");