gpt4 book ai didi

spring - Spring Data Hadoop中如何根据 `timestamp`过滤记录?

转载 作者:可可西里 更新时间:2023-11-01 16:52:21 25 4
gpt4 key购买 nike

我有一个 hbase 表,其中包含如下示例记录:

  03af639717ae10eb743253433147e133                 column=u:a, timestamp=1434300763147, value=apple
10f3d7f8fe8f25d5bdf52343a2601227 column=u:a, timestamp=1434300763148, value=mapple
20164b1aff21bc14e94623423a9d645d column=u:a, timestamp=1534300763142, value=papple
44d1cb38271362d20911a723410b2c67 column=u:a, timestamp=1634300763141, value=scapple

我迷路了,因为我试图根据时间戳提取行值。我正在使用 spring data hadoop。我只能使用以下代码获取所有记录:

 private static final byte[] CF_INFO = Bytes.toBytes("u");
private static final byte[] baseUrl = Bytes.toBytes("a");

List<Model> allNewsList
= hbaseTemplate.find(tableName, columnFamily, new RowMapper<News>()
{
@Override
public Model mapRow(Result result, int rowNum)
throws Exception
{
String dateString = TextUtils.getTimeStampInLong(result.toString());
String rowKey = Bytes.toString(result.getRow());
return new Model(
rowKey,
Bytes.toString(result.getValue(CF_INFO, col_a)
);
}
});

如何应用过滤器,以便能够在时间戳 [1434300763147,1534300763142] 内获取记录。

最佳答案

希望有一天这能对某人有所帮助。

final org.apache.hadoop.hbase.client.Scan scan = new Scan();
scan.setTimeRange(1434300763147,1534300763142);
final List<Model> yourObjects = hbaseTemplate.find(tableName, scan, mapper);

此外,值得一提的是,timerange 的最大值是唯一的,因此如果您希望返回具有该时间戳的记录,请确保将 timerange 的最大值递增 1。

关于spring - Spring Data Hadoop中如何根据 `timestamp`过滤记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926123/

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