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

标签 java hbase nosql

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

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

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

最佳答案

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

可能的替代解决方案:

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

关于java - 更改 hbase 时间戳排序以获得特定行的第一个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30433535/

相关文章:

arrays - MongodB $从数组中只拉一个元素

java - 在用于按键查询值的 Java 程序中表示 JSON 文件

Java/斯卡拉 Swing : Make a component fill all available space in a row

java - 在Java中根据时间戳获取HBase表行

hbase - Hbase Cell Version的使用

database - 关系文档存储(NoSql?)数据库引擎有哪些选择?

Java:Spring/Quartz:基本教程代码不起作用

java - 滚动条事件处理,如何保持抓取的数字静态

java - 在Hbase中存储图片丢失Meta数据和Exif

sql - 下一代数据库