HBase常用Java API

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HBase常用Java API
HBase 的常用Java API
HBase 主要包括5 大类操作:HBase 的配置、HBase 表的管理、列族的管理、列的管理、数据操作等。

1)org.apache.hadoop.hbase.HBaseConfiguration
HBaseConfiguration 类用于管理HBase 的配置信息,使用举例如下。

2)org.apache.hadoop.hbase.client.Admin
Admin 是Java 接口类型,不能直接用该接口来实例化一个对象,而是必须通过调用Connection.getAdmin() 方法,来调用返回子对象的成员方法。

该接口用来管理HBase 数据库的表信息。

它提供的方法包括创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。

创建表使用的例子如下。

1.Configuration configuration = HBaseConfiguration.create();
2.Connection connection = ConnectionFactory.createConnection(configuration);
3.Admin admin = connection.getAdmin();
4.if(admin.tableExists(tableName)){//如果存在要创建的表,那么先删除,再创建
5. admin.disableTable(tableName);
6. admin.deleteTable(tableName);
7.}
8.admin.createTable(tableDescriptor);
9.admin.disableTable(tableName);
10.HColumnDescriptor hd =new HColumnDescriptor(columnFamily);
11.admin.addColumn(tableName,hd);
3)org.apache.hadoop.hbase.HTableDescriptor
HTableDescriptor 包含了表的详细信息。

创建表时添加列族使用的例子如下。

1.HTableDescriptor tableDescriptor =new HTableDescriptor(tableName);// 表的数据
模式
2.tableDescriptor.addFamily(new HColumnDescriptor("name"));// 增加列族
3.tableDescriptor.addFamily(new HColumnDescriptor("age"));
4.tableDescriptor.addFamily(new HColumnDescriptor("gender"));
5.admin.createTable(tableDescriptor);
4)org.apache.hadoop.hbase.HColumnDescriptor
HColumnDescriptor 类维护着关于列族的信息,如版本号、压缩设置等。

它通常在创建表或者为表添加列族的时候使用。

列族被创建后不能直接修改,只能通过删除然后重新创建的方式。

列族被删除的时候,列族里面的数据也会同时被删除。

创建表时添加列族的例子如下。

1.HTableDescriptor tableDescriptor =new HTableDescriptor(tableName);// 表的数据模

2.HColumnDescriptor hcd =HColumnDescriptor("name".getBytes.());// 构造列族
3.hcd.setValue("firstName".getBytes(),"John".getBytes());//给列族添加列
4.hcd.setValue("lastName".getBytes(),"Bates".getBytes());// 给列族添加列
5.tableDescriptor.addFamily(hcd);//把列族加入表描述
5)org.apache.hadoop.hbase.client.Table
Table 是Java 接口类型,不可以用T able 直接实例化一个对象,而是必须通过调用connection.getT able() 的一个子对象,来调用返回子对象的成员方法。

这个接口可以用来和HBase 表直接通信,可以从表中获取数据、添加数据、删除数据和扫描数据。

例子如下。

1.Configuration configuration = HBaseConfiguration.create();
2.Connection connection = ConnectionFactory.createConnection(configuration);
3.Table table = connection.getTable();
4.ResultScanner scanner = table.getScanner(family);
6)org.apache.hadoop.hbase.client.Put
Put 类用来对单元执行添加数据操作。

给表里添加数据的例子如下。

1.Configuration configuration = HBaseConfiguration.create();
2.Connection connection = ConnectionFactory.createConnection(configuration);
3.Table table = connection.getTable();
4.Put put =new Put("*1111".getBytes());//—个 Put 代表一行数据,行键为构造方法中
传入的值
5.put.addColumn("name".getBytes(),null,"Ghander".getBytes());//本行数据的第一列
6.put.addColumn("age".getBytes(),null,"20".getBytes());// 本行数据的第二列
7.put.addColumn("gender".getBytes(),null,"male".getBytes());// 本行數据的第三列
8.put.add("score".getBytes(),"Math".getBytes(),"99".getBytes());// 本行数据的第四

9.table.put(put);
7)org.apache.hadoop.hbase.client.Get
Get 类用来获取单行的数据。

获取指定单元的数据的例子如下。

1.Configuration configuration = HBaseConfiguration.create();
2.Connection connection = ConnectionFactory.createConnection(configuration);
3.Table table = connection.getTable();
4.Get g =new Get(rowKey.getBytes());
5.Result rs = table.get(g);
8)org.apache.hadoop.hbase.client.Result
Result 类用来存放Get 或Scan 操作后的查询结果,并以<key,value〉的格式存储在映射表中。

获取指定单元的数据的例子如下。

1.Configuration configuration = HBaseConfiguration.create();
2.Connection connection = ConnectionFactory.createConnection(configuration);
3.Table table = connection.getTable();
4.Get g =new Get(rowKey.getBytes());
5.Result.rs = table.get(g);
6.for(KeyValue kv : rs.raw()){
7. System.out.printIn("rowkey:"+new String(kv.getRow()));
8. System.out.printIn("Column Family:"+new String(kv.getFamily()));
9. System.out.printIn("Column :"+new String(kv.getQualifier()));
10. System.out.printIn("value :"+new String(kv.getValue()));
11.}
9)org.apache.hadoop.hbase.client.Scan
Scan 类可以用来限定需要查找的数据,如版本号、起始行号、终止行号、列族、列限定符、返回值的数量的上限等。

设置Scan 的列族、时间戳的范围和每次最多返回的单元数目的例子如下。

1.Scan scan =new Scan();
2.scan.addFamily(Bytes.toBytes("columnFamily1"));
3.scan.setTimeRange(1,3);
4.scan.setBatch(1000);
10)org.apache.hadoop.hbase.client.ResultScanner
ResultScanner 类是客户端获取值的接口,可以用来限定需要查找的数据,如版本号、起始行号、终止行号、列族、列限定符、返回值的数量的上限等。

获取指定单元的数据的例子如下。

纯文本复制
1.Scan scan =new Scan();
2.scan.addColumn(Bytes.toBytes("columnFamily1"),Bytes.toBytes("column1"));
3.scan.setTimeRange(1,3);
4.scan.setBatch(10);
5.Configuration configuration = HBaseConfiguration.create();
6.Connection connection = ConnectionFactory.createConnection(configuration);
7.Table table = connection.getTable();
8.try{
9. ResultScanner resuitScanner = table.getScanner(scan);
10. Result rs = resultScanner.next();
11.for(; rs !=null;rs = resultScanner.next()){
12.for(KeyValue kv : rs.list()){
13. System.out.printIn("--------------");
14. System.out.printIn("rowkey:"+new String(kv.getRow()));
15. System.out.printIn("Column Family: "+new String(kv.getFamily()));
16. System.out.printIn("Column :"+new String(kv.getQualifier()));
17. System.out.printIn("value :"+new String(kv.getValue()));
18.}
19.}
20.}catch(IOException e){
21. e.printStackTrace();
22.}。

相关文档
最新文档