2016-03-07 167 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