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

Gid*_*eon 3 hadoop timestamp hbase date

我正在尝试编写一个从过去5天内取出HBase行的组件(5是任意的).我想要使​​用的时间戳是HBase为行提供的默认时间戳(除非由于某种原因它有问题)

我知道我可以使用扫描和时间戳范围,但我不太确定如何在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()]}
Run Code Online (Sandbox Code Playgroud)

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

我还看了其他例子,但找不到我需要的东西

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

提前致谢

Ada*_*ker 6

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

hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}
Run Code Online (Sandbox Code Playgroud)

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

Scan s = new Scan();
s.setTimeRange(1303668804L, 1303668904L);
Run Code Online (Sandbox Code Playgroud)