gpt4 book ai didi

sorting - 在 Hbase 中的日期之间搜索

转载 作者:可可西里 更新时间:2023-11-01 15:10:58 27 4
gpt4 key购买 nike

我有这样的 Hbase 表和 rowKeys (delimter = '#')

0CE5C485#1481400000#A#B#C#T
00C6F485#1481600000#F#J#C#G
065ED485#1481500000#T#X#C#G
...
...

第一部分实际上是时间戳的十六进制反转(第二部分是时间戳)。我有这种 rowkey 格式,这样我就可以将 key 均匀地分成不同的区域。我的区域根据 rowKey 的前两个字符('00'、'01'、...、'FE'、'FF')进行拆分。共256个

有没有办法在不覆盖值中的时间戳的情况下获取两个时间戳之间的所有行?

I tried RegexComparators on top of Row Filters
e.g.
FilterList f = new FilterList(FilterList.Operator.MUST_PASS_ALL)
Filter f1 = new RowFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL,new RegexComparator(".*1481400000")
Filter f2 = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,new RegexComparator(".*1481600000")

f.add(f1)
f.add(f2)

它给了我错误的结果。我试过像上面那样使用 SubStringFilter,但也没有给我正确的结果。

以上只是我为这个问题写的一个例子,但我希望你能理解我手头的问题。

我想使用相同的 key 结构并实现我想要的。这可能吗?

最佳答案

我建议使用时间范围过滤器。

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;

public class test {
public static void main (String[] args) throws IOException {
HTable table = new HTable(HBaseConfiguration.create(), "t1");
Scan s = new Scan();
s.setMaxVersions(1);
// you can use time range filter sfor
s.setTimeRange (1481400000L, 1481600000L);
ResultScanner scanner = table.getScanner(s);
for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
System.out.println(Bytes.toString(rr.getRow()) + " => " +
Bytes.toString(rr.getValue(Bytes.toBytes("f1"), Bytes.toBytes("a"))));
}
}
}

关于sorting - 在 Hbase 中的日期之间搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41080398/

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