在事务特性方面,hbase只支持单row的事务,不能保证跨row(cross-row)的事务。hbase通过行锁来实现单row事务。客户端进行操作时,可以显式对某一个行加锁,但是大部分情况下是没有必要的,因为如果没有显式的加行锁,hbase在内部会默认的加行锁。为了描述方便,用户显式加的行锁简称为显式行锁。
HTable table = new HTable(config, tablename);
RowLock lock = table.lockRow(rowkey);//首先获得rowkey对应的行锁,可能阻塞
Put p1 = new Put(rowkey,lock);
p1.add(cf, qua,value); //在行rowkey上,写数据
table.put(p1);
table.unlockRow(lock);//解锁