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

get ’<table name>’,’row1’

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

hbase> get 'emp01', '1'

   COLUMN                     CELL

personal : city timestamp=141752184837, value=hyderabad

personal : name timestamp=141752178538, value=ram

professional: designation timestamp=1417521885277, value=manager

professional: salary timestamp=1417521903862, value=50000

4 row(s) in 0.0270 seconds

读取指定列

下面给出的是语法,使用get方法读取指定列。

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

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

hbase> get 'emp01', 'row1', {COLUMN=>'personal:name'}

  COLUMN                CELL

personal:name timestamp=1418035791555, value=ZFH

1 row(s) in 0.0070 seconds

使用Java API读取数据

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

第1步:实例化Configuration类

Configuration类增加了HBase的配置文件到它的对象。使用HbaseConfiguration类的create()方法,如下图所示的配置对象。

Configuration conf = HbaseConfiguration.create();

第2步:实例化HTable类

有一类叫HTable,实现在HBase中的Table类。此类用于单个HBase的表进行通信。在这个类实例,它接受配置对象和表名作为参数。实例化HTable类,如下图所示。

HTable hTable = new HTable(conf, tableName);

第3步:实例化获得类

可以从HBase表使用HTable类的get()方法检索数据。此方法提取从一个给定的行的单元格。它需要一个 Get 类对象作为参数。创建如下图所示。

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

第4步:读取数据

当检索数据,可以通过ID得到一个单列,或得到一组行一组行ID,或者扫描整个表或行的子集。

可以使用Get类的add方法变种检索HBase表中的数据。

从特定的列族获取指定的列,使用下面的方法。

get.addFamily(personal)

要得到一个特定的列族的所有列,使用下面的方法。

get.addColumn(personal, name)

第5步:获取结果

获取结果通过Get类实例的HTable类的get方法。此方法返回Result类对象,其中保存所请求的结果。下面给出的是get()方法的使用。

Result result = table.get(gdata);

第6步:从Result实例读值

Result 类提供getValue()方法从它的实例读出值。如下图所示,使用它从Result 实例读出值。

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

下面给出的是从一个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 class ReadData{ public static void main(String[] args) throws IOException, Exception{ // Instantiating Configuration class
Configuration config = HBaseConfiguration.create(); // Instantiating HTable class
HTable table = new HTable(config, "emp01"); // Instantiating Get class
Get gdata = new Get(Bytes.toBytes("row1")); // Reading the data
Result result = table.get(gdata); // Reading values from Result class object
byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name")); byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city")); // Printing the values
String name = Bytes.toString(value);
String city = Bytes.toString(value1); System.out.println("name: " + name + " city: " + city);
}
}

编译和执行上述程序如下所示。

$javac ReadData.java
$java ReadData

下面列出的是输出:

name: ZFH city: anhui

最新文章

  1. c/c++头文件_string
  2. apache2.2 做后端,增加真实ip到日志中
  3. vs安装失败,发生严重错误,错误号:Error 0x80070643
  4. 模拟赛1031d2
  5. 【Unity3D游戏开发】之游戏目录结构之最佳实践和优化 (十一)
  6. UVA 1328 - Period KMP
  7. POJ 1860 Currency Exchange (SPFA松弛)
  8. jquery的map()和each()方法
  9. python基础学习笔记5--对象方法、属性和迭代器
  10. typedef和#define的简单比较
  11. 【BZOJ2431】逆序对数列(动态规划)
  12. x264源代码简单分析:熵编码(Entropy Encoding)部分
  13. redis bind连不上的坑
  14. npm私有仓库 配置verdaccio在docker环境
  15. git 解决授权失败的方法
  16. ionic3自定义android原生插件
  17. yolov3中 预测的bbox如何从特征图映射到原图?
  18. idea搭建Spring Boot+MyBatis
  19. 设计模式之工厂模式(c++)
  20. python3笔记(三)if...else、if...elif...else

热门文章

  1. CF914A Perfect Squares
  2. 洛谷 U3346 A1-偶回文数
  3. [ASP.NET]EF跨项目调用问题
  4. uva 10061(数学)
  5. memcached—向memcached中保存Java实体需注意的问题
  6. apple Swift语言新手教程
  7. angularjs1-路由
  8. bzoj1924: [Sdoi2010]所驼门王的宝藏
  9. 杂项-分布式:Hadoop
  10. ASP.NET Core-组件:目录