更改hbase时间戳排序以获取特定行的第一个版本

Ali*_*i n 5 java hbase nosql

根据我的要求,我需要在Hbase中获取特定行的第一个版本.假设以下Htable:

row_key          cf1:c1           timestamp
----------------------------------------
1                  x                 t1
1                  x                 t2
1                  x                 t3
...
Run Code Online (Sandbox Code Playgroud)

假设我想根据时间戳检索第一个版本的row(1).首先,为此目的是否有任何hbase java方法?第二,如果没有这样的方法,我可以通过获取行(1)的最后版本来将时间戳的排序顺序更改为DESC以检索此类单元吗?对hbase的时间戳排序进行此更改有什么顾虑?

kos*_*tya 4

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

可能的替代解决方案:

  • 将第一个值存储在单独的列中。但这将需要不同的代码来插入和更新单元格。
  • 手动将时间戳设置为Long.MAX_VALUE - System.currentTimeMillis(). 在这种情况下,请确保单元的最大版本数足够高,否则最新值将被 HBase 收集为垃圾。
  • 将时间戳存储为行键的一部分,并使用 Scan with PageFilter 获取第一个值。