一起学HBase——总结HBase中的PUT、GET、DELETE操作

 传统的关系型数据库有CRUD增删改查操作,同样对于NoSQL列式数据库也有CRUD操作。本文对HBase中常用的Scan、GET、PUT、DELETE操作的用法做个总结。

Put操作

Put相当于传统数据库的add操作,就是在数据库中添加一条或多条记录。
Put操作分为两类,一类是一次操作一条记录,另外一类是一次操作多条数据。

HBase提供一个Put类,通过该类的对象就可以在HBase中添加数据。

Put类提供的构造函数如下:

Put(byte[] row)   Put(byte[] row,RowLock rowLock)   Put(byte[] row,long ts)   Put(byte[] row,long ts,RowLock rowLock)

通过上面的构造函数可以知道在创建对象时需要提供一个byte[]类型的参数row,该参数的主要作用是作为一行数据的行键(row key),和关系型数据库中的主键是一样的,是一行数据的唯一键。

Put提供如下的add方法将数据写入到HBase中:

Put add(byte[] family,byte[] qualifier,byte[] value)   Put add(byte[] family,byte[] qualifier,long ts,byte[] value)   Put add(KeyValuee kv)throws IOException

使用Put add(byte[] family,byte[] qualifier,byte[] value)方法添加数据时,因为没有指定时间戳,因此时间戳由region服务器提供。

使用Put add(byte[] family,byte[] qualifier,long ts,byte[] value) 方法添加数据时,由时间戳由参数ts指定。

使用Put add(KeyValue kv)throws IOException添加数据时,将行键、列族、列限定符、时间戳和单元格值封装为一个KeyValue对象。

将一行数据输入到HBase中的代码:

public class HBasePut{     public static void main(String[] args)throws IOExcetion{         //通过加载hbase-default.xml和hbase-site.xml文件的配置生成Configuration对象         Configuration conf = HBaseConfiguration.create();                  //创建HTable对象,用于操作HBase中的bigdata17_table表         HTable table = new HTable(conf,"bigdata17_table");         //创建Put对象,并制定这行数据的行键bigdata17_row1         Put put = new Put(Bytes.toBytes("bigdata17_row1"));         //添加名为colfam1:qual1列,并设置值为val1         put.add(Bytes.toBytes("colfaml"),Bytes.toBytes("qual1"),Bytes.toBytes("val1"));         //将数据插入到表bigdata17_table         table.put(put);     } }

将多行数据插入到HBase表中的代码:

List<Put> puts = new ArrayList<Put>();  Put put1 =  new Put(Bytes.toBytes("bigdata17_row1")); put1.add(Bytes.toBytes("colfaml"),Bytes.toBytes("qual1"),Bytes.toBytes("val1")); puts.add(put1);  Put put2 =  new Put(Bytes.toBytes("bigdata17_row2")); put2.add(Bytes.toBytes("colfam2"),Bytes.toBytes("qual2"),Bytes.toBytes("val2")); puts.add(put2);  Put put3 =  new Put(Bytes.toBytes("bigdata17_row2")); put3.add(Bytes.toBytes("colfam1"),Bytes.toBytes("qual2"),Bytes.toBytes("val3")); puts.add(put3);  table.put(puts);

和一次添加一条数据的区别是,使用了ArrayList列表,将要插入的多条数据存储于ArrayList中。

Get操作

get操作用于从HBase中读取数据,和Put一样,也有两类操作,一次读取一条记录,一次读取多条记录。

Get提供的构造函数如下的:
Get(byte[] row)
Get(byte[] row,RowLock rowLock)
通过上述的构造函数可知在创建Get对象时必须指定行键。RowLock参数的Get构造函数允许用户设置行锁。

HBase读取数据的方法:
Result get(Get get)throws IOException

Get类提供给了如下的方法用于设置精确坐标读取某个单元格的数据:

Get addFamily(byte[] family) Get addColumn(byte[] family,byte[] qualifier) Get setTimeRange(<
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信