使用HBase获取过去N天的所有行

时间:2016-03-07 16:01:24

标签: date hadoop timestamp hbase

我正在尝试编写一个从过去5天内取出HBase行的组件(5是任意的)。我想要使​​用的时间戳是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,但找不到我需要的东西

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

提前致谢

1 个答案:

答案 0 :(得分:6)

在HBase shell中,您可以使用TIMERANGE过滤器。扫描示例--help命令:

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

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

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