簡體   English   中英

更改hbase時間戳排序以獲取特定行的第一個版本

[英]Change hbase timestamp sorting in order to get the first version of specific row

根據我的要求,我需要獲取Hbase中特定行的第一個版本。 假設以下表:

row_key          cf1:c1           timestamp
----------------------------------------
1                  x                 t1
1                  x                 t2
1                  x                 t3
...

假設我想根據時間戳檢索row(1)的第一個版本。 首先,是否有用於此目的的hbase java方法? 其次,如果沒有這樣的方法,我可以通過獲取row(1)的最新版本來將時間戳的排序順序更改為DESC,以檢索此類單元格嗎? 對hbase的時間戳順序進行此更改有何關注?

您可以使用Result.getColumnCells獲取所有列,然后從列表中獲取第一列。

可能的替代解決方案:

  • 將第一個值存儲在單獨的列中。 但是,這將需要不同的代碼來插入和更新單元格。
  • 手動將時間戳設置為Long.MAX_VALUE - System.currentTimeMillis() 在這種情況下,請確保單元的最大版本數足夠高,否則最新的值將被HBase垃圾收集。
  • 將時間戳記存儲為行鍵的一部分,並使用“使用PageFilter掃描”獲取第一個值。

您是否看過scan.setReverse(true)? 附帶說明,它在較早版本中不可用(我們使用0.94.18),並且是我們升級的動力之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM