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

uinbv5nw  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(641)

根据我的要求,我需要得到特定行在hbase的第一个版本。假设以下表:

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

假设我想根据timestamp检索第(1)行的第一个版本。首先,是否有用于此目的的hbase java方法?第二,如果没有这样的方法,我可以将timestamp的排序顺序改为desc,以便通过获取行(1)的最后版本来检索这样的单元格吗?对hbase的时间戳顺序进行此更改有何意义?

zwghvu4y

zwghvu4y1#

可以使用result.getcolumncells获取所有列,然后从列表中获取第一列。
可能的替代解决方案:
将第一个值存储在单独的列中。不过,这需要不同的代码来插入和更新单元格。
手动将时间戳设置为 Long.MAX_VALUE - System.currentTimeMillis() . 在这种情况下,请确保单元的最大版本数足够高,否则最新值将被hbase垃圾收集。
将时间戳存储为行键的一部分,并使用scan with pagefilter获取第一个值。

3zwtqj6y

3zwtqj6y2#

你看过scan.setreverse(真)了吗?另一方面,它在旧版本中不可用(我们使用0.94.18),这是我们升级的动机之一。

相关问题