Hbase自动递增任何列/行键

时间:2014-11-12 15:46:03

标签: hadoop cassandra hbase nosql

我是Hbase的新手

是否可以/如何在Hbase中自动增加行键? (比如每个插入行键必须自动递增)

或者是否可以自动增加任何其他列? (对于每个插入,此列必须自动递增1)

1 个答案:

答案 0 :(得分:6)

在HBase中不推荐单行增加行密钥,请参阅此参考:http://hbase.apache.org/book/rowkey.design.html,第6.3.2页。实际上,使用全局排序的行键会导致分布式应用程序的所有实例写入同一区域,这将成为瓶颈。

如果您可以避免使用自动增量ID并且需要在分布式系统中只拥有唯一ID,则可以使用“hostname”+“PID”+“TIMESTAMP”之类的键作为键。这样它对于每一行都是唯一的

如果您确定需要表中的全局自动增量(它可以是列中的键或某个值),您可以使用incrementColumnValue调用 - 在表中有一个单独的行(或创建一个存储实际值的专用表,并且在插入新行以获取下一个值之前,进程将调用incrementColumnValue。但是这样你就不能保证没有间隙:如果客户端在调用incrementColumnValue后失败,你可能会使计数器递增,但不会插入行。

简而言之,所有提议的解决方案都是客户端的,HBase中没有针对此功能的服务器端实现