【问题标题】:Does timestamp by default appear in an HBase table?默认情况下,时间戳是否出现在 HBase 表中?
【发布时间】:2013-07-08 06:50:10
【问题描述】:

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

例如:

创建“测试”、“cf”

输入'test', 'row1', 'cf:a', 'value1'

输入'test'、'row2'、'cf:b'、'value2'

输入'test'、'row3'、'cf:c'、'value3'

扫描“测试”

行列+单元格

row1 column=cf:a,timestamp=1288380727188,value=value1

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

row3 列=cf:c,时间戳=1288380747365,值=value3

【问题讨论】:

  • 你已经有了答案:)...row1 column=cf:a, "timestamp=1288380727188", value=value1

标签: java nosql hbase timestamping


【解决方案1】:

时间戳实际上是 HBase 列的必需部分,它们的主要用途是列版本控制。 Here is some more detailed explanation 关于版本和时间戳。 此外,“HBase definitive guide”一书包含详细的 PUT 操作描述,它发现了您可以使用时间戳 (TS) 执行的几乎所有操作。

这里的提示是:

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

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

【讨论】:

    【解决方案2】:

    是的,每次您在表格上创建PUT 时,您都会设置时间戳。默认情况下这是currentTimeInMillis,但您也可以设置自己的时间戳。

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

    【讨论】:

    • 哦,好的.,.. 谢谢 Tariq 和 Mihai :)
    • 希望对您有所帮助...您知道您可以将每个问题的一个答案标记为已接受吗?它可以帮助其他人知道问题已得到解答。见meta.stackexchange.com/questions/5234/…
    • 默认currentTimeInMillis设置在客户端还是服务器上?
    【解决方案3】:

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

    row1 column=cf:a, timestamp=1288380727188, value=value1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2016-02-28
      • 2016-01-29
      • 2021-02-24
      • 1970-01-01
      • 2014-02-01
      • 2023-03-28
      相关资源
      最近更新 更多