介绍

get命令和HTable类的get()方法用于从HBase表中读取数据。使用 get 命令,可以同时获取一行数据。它的语法如下:

  1. get ’<table name>’,’row1


下面的例子说明如何使用get命令。扫描emp表的第一行。

  1. hbase(main):012:0> get 'emp', '1'
  2. COLUMN CELL
  3. personal : city timestamp=1417521848375, value=hyderabad
  4. personal : name timestamp=1417521785385, value=ramu
  5. professional: designation timestamp=1417521885277, value=manager
  6. professional: salary timestamp=1417521903862, value=50000
  7. 4 row(s) in 0.0270 seconds


读取指定列

  1. 下面给出的是语法,使用get方法读取指定列。<br />hbase>get 'table name', rowid’, {COLUMN => column family:column name ’}<br /> 下面给出的示例,是用于读取HBase表中的特定列。
  1. hbase(main):015:0> get 'emp', 'row1', {COLUMN=>'personal:name'}
  2. COLUMN CELL
  3. personal:name timestamp=1418035791555, value=raju
  4. 1 row(s) in 0.0080 seconds


使用Java API读取数据

  1. 从一个HBase表中读取数据,要使用HTable类的get()方法。这种方法需要Get类的一个实例。按照下面从HBase表中检索数据给出的步骤。

第1步:实例化Configuration类

  1. Configuration类增加了HBase的配置文件到它的对象。使用HbaseConfiguration类的create()方法,如下图所示的配置对象。<br />Configuration conf = HbaseConfiguration.create();

第2步:实例化HTable类

  1. 有一类叫HTable,实现在HBase中的Table类。此类用于单个HBase的表进行通信。在这个类实例,它接受配置对象和表名作为参数。实例化HTable类,如下图所示。<br />HTable hTable = new HTable(conf, tableName);

第3步:实例化获得类

  1. 可以从HBase表使用HTable类的get()方法检索数据。此方法提取从一个给定的行的单元格。它需要一个 Get 类对象作为参数。创建如下图所示。<br />Get get = new Get(toBytes("row1"));

第4步:读取数据

  1. 当检索数据,可以通过ID得到一个单列,或得到一组行一组行ID,或者扫描整个表或行的子集。<br /> 可以使用Get类的add方法变种检索HBase表中的数据。<br /> 从特定的列族获取指定的列,使用下面的方法。<br />get.addFamily(personal)<br /> 要得到一个特定的列族的所有列,使用下面的方法。<br />get.addColumn(personal, name)

第5步:获取结果

  1. 获取结果通过Get类实例的HTable类的get方法。此方法返回Result类对象,其中保存所请求的结果。下面给出的是get()方法的使用。<br />Result result = table.get(g);

第6步:从Result实例读值

  1. Result 类提供getValue()方法从它的实例读出值。如下图所示,使用它从Result 实例读出值。
  1. byte [] value =
  2. result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
  3. byte [] value1 =
  4. result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));
  1. 下面给出的是从一个HBase表中读取值的完整程序
  1. import java.io.IOException;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.hbase.HBaseConfiguration;
  4. import org.apache.hadoop.hbase.client.Get;
  5. import org.apache.hadoop.hbase.client.HTable;
  6. import org.apache.hadoop.hbase.client.Result;
  7. import org.apache.hadoop.hbase.util.Bytes;
  8. public class RetriveData{
  9. public static void main(String[] args) throws IOException, Exception{
  10. // Instantiating Configuration class
  11. Configuration config = HBaseConfiguration.create();
  12. // Instantiating HTable class
  13. HTable table = new HTable(config, "emp");
  14. // Instantiating Get class
  15. Get g = new Get(Bytes.toBytes("row1"));
  16. // Reading the data
  17. Result result = table.get(g);
  18. // Reading values from Result class object
  19. byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
  20. byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));
  21. // Printing the values
  22. String name = Bytes.toString(value);
  23. String city = Bytes.toString(value1);
  24. System.out.println("name: " + name + " city: " + city);
  25. }
  26. }
  1. 编译和执行上述程序如下所示。
  1. $javac RetriveData.java
  2. $java RetriveData
  1. 下面列出的是输出:
  1. name: Raju city: Delhi