鍍金池/ 教程/ 大數(shù)據(jù)/ HBase讀取數(shù)據(jù)
HBase禁用表
HBase創(chuàng)建表
HBase客戶端API
HBase安裝
HBase表描述和修改
HBase Admin API
HBase掃描
HBase創(chuàng)建數(shù)據(jù)
HBase列出表
HBase刪除數(shù)據(jù)
HBase讀取數(shù)據(jù)
HBase常用命令
HBase更新數(shù)據(jù)
HBase關(guān)閉
HBase架構(gòu)
HBase Shell
HBase Exists
HBase安全
HBase教程
HBase啟用表
HBase計(jì)數(shù)和截?cái)?/span>
HBase刪除表

HBase讀取數(shù)據(jù)

get命令和HTable類的get()方法用于從HBase表中讀取數(shù)據(jù)。使用 get 命令,可以同時(shí)獲取一行數(shù)據(jù)。它的語(yǔ)法如下:

get ’<table name>’,’row1

下面的例子說(shuō)明如何使用get命令。掃描emp表的第一行。

hbase(main):012:0> get 'emp', '1'

   COLUMN                     CELL
   
personal : city timestamp=1417521848375, value=hyderabad

personal : name timestamp=1417521785385, value=ramu

professional: designation timestamp=1417521885277, value=manager

professional: salary timestamp=1417521903862, value=50000

4 row(s) in 0.0270 seconds

讀取指定列

下面給出的是語(yǔ)法,使用get方法讀取指定列。

hbase>get 'table name', rowid’, {COLUMN => column family:column name ’}

下面給出的示例,是用于讀取HBase表中的特定列。

hbase(main):015:0> get 'emp', 'row1', {COLUMN=>'personal:name'}

  COLUMN                CELL
  
personal:name timestamp=1418035791555, value=raju

1 row(s) in 0.0080 seconds

使用Java API讀取數(shù)據(jù)

從一個(gè)HBase表中讀取數(shù)據(jù),要使用HTable類的get()方法。這種方法需要Get類的一個(gè)實(shí)例。按照下面從HBase表中檢索數(shù)據(jù)給出的步驟。

第1步:實(shí)例化Configuration類

Configuration類增加了HBase的配置文件到它的對(duì)象。使用HbaseConfiguration類的create()方法,如下圖所示的配置對(duì)象。

Configuration conf = HbaseConfiguration.create();

第2步:實(shí)例化HTable類

有一類叫HTable,實(shí)現(xiàn)在HBase中的Table類。此類用于單個(gè)HBase的表進(jìn)行通信。在這個(gè)類實(shí)例,它接受配置對(duì)象和表名作為參數(shù)。實(shí)例化HTable類,如下圖所示。

HTable hTable = new HTable(conf, tableName);

第3步:實(shí)例化獲得類

可以從HBase表使用HTable類的get()方法檢索數(shù)據(jù)。此方法提取從一個(gè)給定的行的單元格。它需要一個(gè) Get 類對(duì)象作為參數(shù)。創(chuàng)建如下圖所示。

Get get = new Get(toBytes("row1"));

第4步:讀取數(shù)據(jù)

當(dāng)檢索數(shù)據(jù),可以通過(guò)ID得到一個(gè)單列,或得到一組行一組行ID,或者掃描整個(gè)表或行的子集。

可以使用Get類的add方法變種檢索HBase表中的數(shù)據(jù)。

從特定的列族獲取指定的列,使用下面的方法。

get.addFamily(personal) 

要得到一個(gè)特定的列族的所有列,使用下面的方法。

get.addColumn(personal, name) 

第5步:獲取結(jié)果

獲取結(jié)果通過(guò)Get類實(shí)例的HTable類的get方法。此方法返回Result類對(duì)象,其中保存所請(qǐng)求的結(jié)果。下面給出的是get()方法的使用。

Result result = table.get(g);  

第6步:從Result實(shí)例讀值

Result 類提供getValue()方法從它的實(shí)例讀出值。如下圖所示,使用它從Result 實(shí)例讀出值。

byte [] value =
result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 =
result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

下面給出的是從一個(gè)HBase表中讀取值的完整程序

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

public 上一篇:HBase安全下一篇:HBase安裝