未更新的限定符是否仍然在hbase被逐出?

时间:2013-12-25 19:27:34

标签: hbase

我在他们的文档中找不到这个。这是一个例子:

假设我有一个带有一个列族f的Hbase表,其中maxVersions设置为2,并且数据包含2个限定符q1和q2。我向它添加一行r1,现在我有:

r1=>f:q1:ts1 ("some data 1")
r1=>f:q2:ts1 ("some data 2")

之后我执行put r1 => f:q1(“其他数据”)两次。根据我的理解,q1限定符中的“some data 1”将被删除,因为有两个新版本被写入q1。但是资格赛q2会发生什么?是否删除了数据,因为我添加了该行的两个新版本,或者它是否保留,因为它只有一个版本(我只将数据添加到q1)?

1 个答案:

答案 0 :(得分:2)

首先关闭HBase不会立即删除旧版本 - 它们只会在压缩中删除。大多数操作都会掩盖旧版本(超过最大版本)但不是所有操作都会看到JIRA-10102

关于你的问题,q2不会受到影响。版本在每个限定符实例上进行管理。您可以在hbase shell

中轻松尝试
create 't1', {NAME => 'f', VERSIONS => 1}
put 't1', 'r1', 'f:q1', 'some data 1', 1000
put 't1', 'r1', 'f:q2', 'some data 2', 1000
put 't1', 'r1', 'f:q1', 'other data', 2000
scan 't1'