2016-03-07 164 views
1

我试图编写一个组件,它从过去5天(5是任意的)从HBase中提取行。我想要使​​用的时间戳是HBase给予行的默认时间戳(除非它由于某种原因有问题)使用HBase获取最近N天的所有行

我知道我可以使用scan and with timestamp范围,但我不太确定如何获取HBase中的当前日期(I目前我正在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。我做了两个进口日期,SimpleDateFormat的和一个ParsePosition成功

我也看了other examples,但无法找到正是我需要

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

在此先感谢

回答

3

在HBase的外壳可以使用TIMERANGE过滤器。从扫描--help命令举例:

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

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

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

我已经看到了一些我张贴的链接这个确切的例子,但是,这不是我所需要的。我试图从过去的N天中获取所有行,但我不确定如何使用HBase执行此操作 – Gideon

+0

@Gideon现在什么都不起作用? – AdamSkywalker

+0

什么是不工作是我不知道如何获取数据到今天。似乎今天的日期不可能只是通过新的日期()。getTime() – Gideon