如何防止 Hbase 覆盖单元格中的现有值?
任何人都可以解释如何防止 hbase 更新具体列和键中的单元格(如果值已存在)?
例如,当并行的两个进程写入 VERSIONS = 1
的同一个单元格时,只有最后一个进程会出现在数据库中,而我只需要第一个进程,而另一个进程应该失败。
Can anyone explain how to prevent hbase from updating the cell in the concrete column and key if the value already exists?
For example when the two processes in parallel will write to the same cell where VERSIONS = 1
, only the last one will be present in the database, while I need only the first one, and the other should fail.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果强制版本为1,HBase将只保留存储的最后一个版本。您可以增加允许的版本。
但是,如果您对某个行键进行了多次点击,则这可能表明行键设计不佳。应该巧妙地创建行键,以便实现良好的分区和独特的命中。这减少了区域服务器上的热点并提高了整体性能。
对于有大量冗余行命中的情况,不应使用版本限制 1,除非您只关心最近的命中。
If you force versions to be 1, HBase will only keep the last version stored. You could increase the allowed versions.
However, if you are having multiple hits to a row-key, this may be an indication of poor row-key design. Row-keys should to be cleverly created in order to allow for good partitioning and unique hits. This reduces hot-spots on Region Servers and improves performance overall.
For instances where you have a lot of redundant row hits, you should not be using a version limit of 1 unless you only care about the MOST RECENT hit.