检查并将其放入Hbase

3

我有一个问题,需要向Hbase表中插入记录,其中90%的记录来自源头都是重复的。在这种情况下,是首先从Hbase查询记录,如果不存在则调用put,还是直接调用put。

以上两种方式哪一种在性能方面更好。

3个回答

5

HTable的checkAndPut()和exists()方法需要访问表数据,如果您接收到大量写请求并且数据不在内存中,则可能会对您造成严重影响。

HBase中的普通写操作通常不会太昂贵。因此,如果您拥有良好的rowKey设计并且已经避免热点区域,那么我建议您只需覆盖数据即可。


0

我有点同意两个答案。确实,在使用CAS(检查和设置)机制之前,必须先审查设计,并查看是否可以重构并使用普通写入。但是,在某些情况下,这并不容易。

在使用checkAndPut()之前,我要确保的另一件事是,在更新值时,此操作需要隔离。HBase仅在重写时才能保证它,但不在更新时。

最后,请检查是否可以使用Append而不是checkAndPut


0
如果您不想重新插入现有记录,可以使用HTable的checkAndPut方法。使用此方法,只有在满足指定条件时才会应用put操作。因此,您可以检查列是否存在,仅在不存在时才进行插入操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接