hbase如何找到最新版本的数据?

时间:2018-03-09 05:49:50

标签: hbase

根据我的理解,habase应该遍历hfile的一部分以便找到所需的数据。我做了以下经验:

我使用以下命令创建表:

create 'test', {'NAME' => 'cf', VERSIONS => 1}

然后我插入一行:

put 'test', 'row1', 'cf:a', 'data1'

从get命令get 'row1'可以看到以下输出:

COLUMN                CELL
cf:a                 timestamp= 1520570145471, value=data1 

之后我插入了大量数据,以便让hbase将数据刷新到hfile,总计100000行,并按如下命令刷新:

flush 'test'

最后我通过以下命令更新首先插入的行:

put 'test', 'row1', 'cf:a', 'data2', 1520570145371

您必须注意的是更新时间戳小于上一个时间戳。然后我发现hbase也可以找到大版本的数据,hbase怎么办呢?是否hbase扫描所有hfile以找到该行的所有版本?

1 个答案:

答案 0 :(得分:0)

根据docs,A {row,column,version}元组确切地指定了HBase中的一个单元格。 HBase版本维度按递减顺序存储,因此从存储文件读取时,首先会找到最新值。

默认情况下,在执行get时,将返回版本具有最大值的单元格(可能是也可能不是最新编写的单元格)。