hadoop - Hbase 自动递增任何列/行键

标签 hadoop cassandra hbase nosql

我是Hbase的新手

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

或者是否可以自动递增任何其他列? (就像每次插入此列都必须自动递增 1)

最佳答案

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

如果您可以避免使用自动递增 ID 并且只需要在分布式系统中具有唯一 ID,则可以使用诸如“主机名”+“PID”+“TIMESTAMP”之类的东西作为键。这样每一行都是唯一的

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

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

关于hadoop - Hbase 自动递增任何列/行键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26890944/

相关文章:

尝试连接到 HBase 时出现 java.lang.NumberFormatException

hadoop - Hive + Tez::A 连接查询卡在最后 2 个映射器很长一段时间

java - 带有连字符 (-) 的 Cassandra Keyspace 名称

java - 如何在 Cassandra 中使用 datastax java 驱动程序有效地使用准备好的语句?

java - hbase上计算平均温度时出错

java - Java 中的 Hbase CopyTable

hadoop - 如何在 pig latin 中的 foreach 中使用过滤器运算符

hadoop - 将 HIVE 查询结果中的空值或 NULL 值替换为特定值

csv - 根据以下逻辑加载数据

scala - 如何使用 Scala 在 lagom 中为 NoHostAvailableException 编写测试用例?