检查并放入Hbase

时间:2013-12-11 17:13:27

标签: performance hbase

我有一个案例,我们需要在Hbase表中插入记录,其中90%来自源的记录被重复。在这种情况下, 建议首先从Hbase查询记录,如果不存在则调用put 要么 只需简单地打电话。

以上哪项在性能方面表现良好。

3 个答案:

答案 0 :(得分:5)

两个HTable方法checkAndPut()和exists()都需要访问表数据,如果收到大量写入请求并且数据不在memstore中,这些数据可能会严重损害您。

HBase中的普通写入通常不是那么昂贵,因此,如果你有一个很好的rowKey设计并且你已经避开了热区,我只会坚持覆盖数据。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我同意这两个答案。确实,在使用CAS(检查和设置)机制之前,必须首先修改他的设计,看看是否可以重构它并使用普通写入。但是,在某些情况下,这不是微不足道的。

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

最后,检查是否可以使用Append代替checkAndPut