2013-07-08 28 views
2

當我們創建任何HBase的表,不時間戳出現在該表中,當我們掃描了嗎?默認時間戳是否出現在HBase表中?

例如:

創建 '測試', 'CF'

把 '測試', 'ROW1', 'CF:一', 'VALUE1'

把「測試」, 'ROW2', 'CF:b', '值'

把 '測試', 'ROW3', 'CF:C', '值3'

掃描 '測試'

ROW COLUMN + CELL

ROW1柱= CF:一,時間戳= 1288380727188,值=值1

ROW2柱= CF:B,時間戳= 1288380738440,值=值2

ROW3柱= cf:c,timestamp = 1288380747365,value = value3

+0

你已經有了答案:)... row1 column = cf:a,「timestamp = 1288380727188」,value = value1 – Tariq

回答

1

是的,每次您在表上設置PUT時,您都會設置時間戳。默認情況下,這是currentTimeInMillis,但您也可以設置自己的時間戳。

timestamp的允許細胞的版本控制。一個scan將返回最新的版本,但可以使用Scan.setMaxVersions()指定最大版本,或者如果你想有一個特定的時間戳,您可以使用Scan.setTimeRange()Scan.setTimeStamp()

+0

哦,好的,謝謝Tariq和Mihai :) – DrewRose

+0

希望能幫到...你知道你可以標記每個問題的答案被接受嗎?它可以幫助其他人知道這個問題得到了解答。請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

+0

在客戶端或服務器上設置了默認'currentTimeInMillis'嗎? –

1

時間戳實際上是HBase的列強制性的一部分,他們的主要目的是列版本。 Here is some more detailed explanation關於版本和時間戳。 也是「HBase definitive guide」的書包含發現幾乎所有你可以用時間戳(TS)做詳細PUT操作說明。

這裏的提示是:

  • 如果沒有在指定PUT TS,服務器會自動添加它。
  • 如果要手動指定,所以你實際上不是這個領域的「推薦」的使用限制,有很多的選擇,你可以指定任何TS。
  • 的時間戳附加選項(TS)是由「保留已刪除的記錄」表選項,版本的最低數量,以保持和數據「生存時間」(TTL)支持發現。

所以是的,你不能擺脫這些時間戳/版本,但有很多選擇如何使用它們。

相關問題