繁体   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