HBase Client JAVA API
阿新 • • 發佈:2019-01-09
在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物件的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(); }