在HBase中,为了提供单行事务支持,它使用行锁定概念。假设,例如行锁定HBase单行事务支持
Put p=new Put("/*Row Key*/");
该语句将锁定该行。
所以,直到我们完成
table.put(P)
锁不会被释放。
所以,如果我开始一个新的认沽即
认沽P1 =新的认沽( “/ 行键”)之间;
该p1放不应该工作,因为该行已被锁定,但在HBase 0.94时,当我尝试它的工作。
关于行锁Link Where i had seen about Row Lock我的理解是否有任何错误。如果不是单行事务支持如何处理out行锁定。
有一个方法** getRowLock()**可以使用Put对象来调用。所以,我认为在创建对象时只有行被锁定。你说的话可能是正确的。 Thanx的回复 – Rohit 2013-02-16 08:35:17
我可以问你正在使用什么版本的HBase API?我发现这个页面http://tsunanet.net/~tsuna/asynchbase/api/org/hbase/async/RowLock.html这似乎表明行锁可以由客户端生成和保存。我相信作为我的回答的一个修正,java客户端将自动从服务器获取锁定,但只有在调用table.put()时它才会获得锁定。很难找到有关这些问题的文档,不是! – fabspro 2013-02-16 09:11:28
为了澄清,当你创建一个新的Put()对象时,你完全没有接触到服务器。但是当你调用table.put(p)时,java客户端将在内部从服务器获取锁,然后写入数据,然后释放锁。希望它有助于:) – fabspro 2013-02-16 09:12:27