使用 HBase 获取最近 N 天的所有行

Get all rows from the last N days with HBase

我正在尝试编写一个组件,从最近 5 天(5 是任意的)从 HBase 获取行。我想使用的时间戳是 HBase 给行的默认时间戳(除非由于某种原因有问题)

我知道我可以使用 scan and with timestamp 范围,但我不太确定如何在 HBase 中获取当前日期(我目前正在 HBase shell 中测试它,但最终我需要有一个代码这样做)。我试过这样的事情:

scan 'urls', {COLUMNS => 'urls', TIMERANGE => [SimpleDateFormat.new("yy/MM/dd HH:mm:ss").parse("2016/03/02 00:00:00", ParsePosition.new(0)).getTime(), new Date().getTime()]}

但是 shell 说我有一个意外的语法错误 tCONSTANT。我确实成功导入了 Date、SimpleDateFormat 和 ParsePosition

我也看了 other examples 但找不到我需要的东西

我也想知道是否有更优雅的方式来完成这个任务?

提前致谢

在 HBase shell 中,您可以使用 TIMERANGE 过滤器。来自 scan --help 命令的示例:

hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}

对于java客户端,可以在扫描对象上设置timeRange:

Scan s = new Scan();
s.setTimeRange(1303668804L, 1303668904L);