3

当我们创建任何 HBase 表时,当我们扫描它时,时间戳是否出现在该表中?

例如:

创建'测试','cf'

把'测试','row1','cf:a','value1'

把'测试','row2','cf:b','value2'

把'test','row3','cf:c','value3'

扫描“测试”

行列+单元格

第1行列=cf:a,时间戳=1288380727188,值=值1

row2 列=cf:b,时间戳=1288380738440,值=value2

第3行列=cf:c,时间戳=1288380747365,值=值3

4

3 回答 3

4

时间戳实际上是 HBase 列的必需部分,它们的主要目的是列版本控制。这是有关版本和时间戳的更详细说明。此外,“ HBase 权威指南”一书包含详细的 PUT 操作描述,其中发现了您可以使用时间戳 (TS) 执行的几乎所有操作。

这里的提示是:

  • 如果你没有在 PUT 中指定 TS,服务器会自动添加它。
  • 如果您手动指定,您可以指定任何 TS,因此您实际上不受此字段的“推荐”使用的限制,并且有很多替代方案。
  • 时间戳 (TS) 的其他选项通过“保留已删除记录”表选项、要保留的最小版本数和数据“生存时间”(TTL) 支持来发现。

所以是的,你不能摆脱这些时间戳/版本,但是有很多选择如何使用它们。

于 2013-07-09T08:07:26.337 回答
1

是的,每次你PUT在桌子上做一个你设置时间戳。默认情况下,这是currentTimeInMillis但您也可以设置自己的时间戳。

timestamp允许对单元进行版本控制。Ascan将返回最新版本,但您可以使用指定最大版本控制,Scan.setMaxVersions()或者如果您想要一个可以使用的特定时间戳,Scan.setTimeRange()或者Scan.setTimeStamp()

于 2013-07-08T08:27:10.920 回答
0

是的,它出现了。你可以在你的例子中看到

第1行列=cf:a,时间戳=1288380727188,值=值1

于 2019-11-15T09:26:22.887 回答