我有一个带有示例记录的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]
.
2条答案
按热度按时间ibrsph3r1#
希望有一天这能帮上忙。
另外,值得一提的是,timerange的最大值是独占的,因此如果希望返回带有该时间戳的记录,请确保将timerange的最大值增加1。
kupeojn62#
使用hbase客户端的scanner对象解决了这个问题。