Java操作HBase接口

Java操作HBase接口

一、HBase表结构分析:

1、  这张表的表名为:user。

2、  这张表有两个family:family1和family2,两个family的构造都是一样的。

3、  rowkey有两个:UserA和UserB,即两条记录。

每一条记录的family下,可以有多个列。每个记录之间的列没有关系。

二、准备工作:

1、  准备hbase.properties配置文件,里面放了hMaster、zQuorum和zPort三个属性,它们的值分别为一个hbase的ip、三个ZooKeeper的ip和ZooKeeper的端口。

2、  写一个java文件,用于读取hbase.properties中的属性值。

3、  将第2步读取到的值封装到hadoop的Configuration对象中,变量名为conf,下文会用到。

4、  创建一个表池,只有new一次,需要表的时候,直接去get就可以了。关键代码:

static { pool = new HTablePool(conf1000); }

public static HTable getHTable(String tableName) {

            return (HTable) pool.getTable(tableName);

}

5、  创建和删除hbase表的时候,需要用到HBaseAdmin,代码如下:

private static HBaseAdmin admin = new HBaseAdmin(conf);

三、用java操作hbase:

1、  创建表,创建表的时候,需要表名和family的名字:

HTableDescriptor tableDes = new HTableDescriptor(“user”);

tableDes.addFamily(new HColumnDescriptor(“family1″));

admin.createTable(tableDes);

2、  删除表,删除表的时候,需要表名:

admin.disableTable(“user”);

admin.deleteTable(“user”);

3、  写入数据,需要表名和待写入的数据:

Put put = new Put(“UserA”.getBytes());

put.add(“family1”.getBytes(),“name”.getBytes(),“tdy”.getBytes());

HTable table = TablePool.getHTable(“user”);

table.put(put);

Put构造函数的参数为rowkey。put的add方法,第一个参数为family,第二个参数为列名,第三个参数为该列的值。

4、  查询数据,分为查询所有、根据rowkey查询和条件过滤:

1)  查询所有:

HTable table = TablePool.getHTable(“user”);

ResultScanner rs = table.getScanner(new Scan());

然后可以遍历rs,for(Result r : rs),得到rowkey。

再遍历Result,for(KeyValue keyValue : r.raw()),得到该rowkey下的family、列名和该列的值。

2)  根据rowkey查询:

Get get = new Get(“UserA”.getBytes());

HTable table = TablePool.getHTable(“user”);

Result r = table.get(get);

然后遍历r,就可以得到该rowkey下所有的family、列名和该列的值。

3)  条件过滤:

Filter filter = new SingleColumnValueFilter(

       Bytes.toBytes(“family1″), Bytes.toBytes(“name”),

CompareOp.EQUAL, Bytes.toBytes(“tdy”));

    Scan scan = new Scan();

    scan.setFilter(filter);

HTable table = TablePool.getHTable(“user”);

    ResultScanner rs = table.getScanner(scan);

先设置好过滤条件,这里为family1下列为name,值为tdy的记录被查询。

然后对rs进行遍历,和查询所有的动作一样的遍历方式。

注:还可以组合多个filter进行过滤,详细代码参考文章最后链接。

5、  删除数据:

HTable table = TablePool.getHTable(“user”);

Delete delete = new Delete(“UserA”.getBytes());

table.delete(delete);

将要删除的记录的rowkey传递给Delete构造函数。

注:还可以将多个rowkey封装在list里面,进行删除。详细代码参考文章最后链接。

6、  修改数据:

Put put = new Put(“UserA”.getBytes());

put.add(“family1”.getBytes(),“name”.getBytes(),“tdy_1”.getBytes());

HTable table = TablePool.getHTable(“user”);

table.put(put);

修改数据和写入数据操作一致。若不存在该rowkey,则为写入数据;若存在该rowkey,则为修改数据。

下面的链接为《JAVA操作HBase接口测试指导书》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值