1. 程式人生 > >HBase Client JAVA API

HBase Client JAVA API

在java中通過hbase client對hbase進行讀寫大體有如下步驟:

  • 建立HBaseConfiguration物件,該物件可以讀取CLASSPATH下的hbase-site.xml檔案的內容。
    Configuration config = HBaseConfiguration.create();
  • 用前面的config物件為入參建立Connection物件來連線至目標HBase叢集。connection物件對資源消耗較大,應該避免建立過多的例項。使用完畢後,呼叫connection的close()方法關閉連線,建議使用try/finally來確保連線的關閉。
    Connection connection = ConnectionFactory.createConnection(config);
  • 以指定的table名稱(應該是已存在的)為入參建立Table物件來連線指定的表。使用完畢後,需要呼叫table的close()方法進行關閉。與connection不同,table物件是輕量的,對table物件的建立,不需要像connection那樣小心,當然,這並不是鼓勵你建立得越多越好。
    Table table = connection.getTable(TableName.valueOf("WordCount"));
  • 以指定的row key(可以是在HBase中還不存在的)為入參建立Put物件來持有要寫入的資料。
    Put p = new
    Put(Bytes.toBytes("key"));
  • 呼叫Put物件的addColumn方法,接受列族名稱(column family)、列名(column qualifier)和要寫入的值作為引數。可以多次呼叫該方法讓put物件持有一定數量的資料後,再一次性提交。
    put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("words"), Bytes.toBytes("word"));
  • 以Put物件為入參,呼叫table的put方法來提交要寫入hbase的資料
      
    table.put(put);
  • 關閉table
    if(table != null) table.close();
  • 關閉connection
    connection.close();

     

雖然可能應用場景相對較少,但還是附帶介紹一下從HBase讀取資料:

  • 以指定的row key為入參建立Get物件
    Get get = new Get(Bytes.toBytes("key"));
  • 以Get例項為入參呼叫table的get方法來獲取結果集物件Result
    Result r = table.get(get);
  • 從結果集中獲取制定列的值
    byte[] value = r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("words"));
  • 也可以使用scan來批量讀取,Scanner實現了Iterable,因此可以使用foreach來進行遍歷:
    Scan scan = new Scan();
    //獲取指定列族所有列的資料
    scan.addFamily(Bytes.toBytes("cf"));
    ResultScanner scanner = table.getScanner(scan);
    try {
        for (Result r : scanner) {...}
    }finally{
        scanner.close();
        }