2

我有一个包含 1 列(费用)的 hbase 表,其中 date 是行键。

如何获取过去 5 天的所有记录?假设今天的日期是 2014-04-13?使用哪个过滤器?

我有如下数据

rowkey           Expense
2014-04-13       128
2014-04-12       57
2014-04-11       10
2014-04-10       100 
2014-04-09       797
2014-04-08       67
2014-04-07       56
2014-04-06       14
4

3 回答 3

3

你不需要过滤器。假设今天是 2014-04-13,您可以将开始行设置为 2014-04-09,将停止行设置为 2014-04-14。像那样

Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes("2014-04-09"));
scan.setStopRow(Bytes.toBytes("2014-04-14"));
于 2014-04-25T02:22:33.150 回答
3

mashuai 的回答会很好,但只是为了提供替代方案,您也可以进行反向扫描:

Scan scan = new Scan();
scan.setReversed(true);
scan.setMaxResultSize(5);
于 2015-03-25T21:36:51.843 回答
1

根据文档 setMaxResultSize 可能不是你想要的:

公共扫描 setMaxResultSize(long maxResultSize)

设置最大结果大小。默认值为 -1;这意味着不会为此扫描设置特定的最大结果大小,而是使用全局配置值。(默认为无限制)。

参数: maxResultSize - 以字节为单位的最大结果大小。

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setMaxResultSize-long-

您可以使用固定的开始键和停止键,也可以使用 PageFilter 和 setCaching 的组合。

于 2016-12-21T13:28:53.997 回答