在我的理解中,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以查找此行的所有版本?
发布于 2018-03-09 14:48:46
根据版本,{行,列,版本}元组精确地指定HBase中的一个单元格。HBase版本维度按降序存储,以便在从存储文件读取时,最先找到最新的值。
默认情况下,当执行get时,会返回其版本值最大的单元格(可能是也可能不是最新写入的单元格)。
https://stackoverflow.com/questions/49187383
复制相似问题