我有一个问题,需要向Hbase表中插入记录,其中90%的记录来自源头都是重复的。在这种情况下,是首先从Hbase查询记录,如果不存在则调用put,还是直接调用put。
以上两种方式哪一种在性能方面更好。
我有一个问题,需要向Hbase表中插入记录,其中90%的记录来自源头都是重复的。在这种情况下,是首先从Hbase查询记录,如果不存在则调用put,还是直接调用put。
以上两种方式哪一种在性能方面更好。
HTable的checkAndPut()和exists()方法需要访问表数据,如果您接收到大量写请求并且数据不在内存中,则可能会对您造成严重影响。
HBase中的普通写操作通常不会太昂贵。因此,如果您拥有良好的rowKey设计并且已经避免热点区域,那么我建议您只需覆盖数据即可。
我有点同意两个答案。确实,在使用CAS
(检查和设置)机制之前,必须先审查设计,并查看是否可以重构并使用普通写入。但是,在某些情况下,这并不容易。
在使用checkAndPut()
之前,我要确保的另一件事是,在更新值时,此操作需要隔离。HBase
仅在重写时才能保证它,但不在更新时。
最后,请检查是否可以使用Append
而不是checkAndPut
。