我正在尝试编写一个组件,从过去 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);
关于date - 使用 HBase 获取最近 N 天的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35848337/