我正在尝试编写一个从过去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,但找不到我需要的东西
我还想知道是否有更优雅的方式来完成这项任务?
提前致谢
答案 0 :(得分:6)
在HBase shell中,您可以使用TIMERANGE过滤器。扫描示例--help命令:
hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}
对于java客户端,您可以在扫描对象上设置timeRange:
Scan s = new Scan();
s.setTimeRange(1303668804L, 1303668904L);