gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:42:59 27 4
gpt4 key购买 nike

我已经在HBase工作了几周了。我的问题是:

我有一个包含100条记录的HBase表,每条记录在一个列族中有三列,而只有一个列族。现在,我想基于时间戳检索行。意味着应该首先检索最后添加的行。就像(LIFO)。现在该功能在HBase中可用吗?如果是,那我该怎么办?我正在使用0.98.3。

注意:在插入数据时,我没有手动提到时间戳。

我正在尝试用Java语言来做。

问候

最佳答案

通过行键(升序)按自然顺序对行进行排序,执行全表扫描时完全不涉及时间戳,检索到的第一行将是最低的。

如果是字符串行键,则顺序如下:

STRING  ROW
0 \x30
00 \x30\x30
0000 \x30\x30\x30\x30
0001 \x30\x30\x30\x31
0002 \x30\x30\x30\x32
...
0010 \x30\x30\x31\x30
1 \x31
10 \x31\x30
2 \x32
a \x61
ab \x61\x62
...
zzzz \x7A\x7A\x7A\x7A

如果是4字节有符号整数行键,则顺序如下:
INT     ROW
1 \x00\x00\x00\x01
2 \x00\x00\x00\x02
3 \x00\x00\x00\x03
4 \x00\x00\x00\x04
...
100 \x00\x00\x00\x64
...
10000 \x00\x00\x27\x10
...
MAX_INT \x7F\xFF\xFF\xFF

如果您需要将扫描用作LIFO,则必须将倒置的时间戳记作为行键的前缀(尽管由于热点,建议不要在繁重的写入环境中使用此设计)。
byte[] rowKey = Bytes.add( Byte.toBytes( Long.MAX_VALUE - System.currentTimeMillis() ), "-myRow".getBytes());

如果不反转时间戳,它将作为LILO使用。

有关更多信息,请参见HBase手册的以下部分: https://hbase.apache.org/book/rowkey.design.html

关于java - 在Java中根据时间戳获取HBase表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com