基于日期获取hbase表的计数

2skhul33  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(405)

使用插入的时间戳根据时间段获取hbase表行数的最简单方法是什么?我只发现使用:

hbase> count ‘t1’, INTERVAL => 100000

这不能解决我的问题。似乎有另一个选择,但我得到0结果?

hbase>  get 'hbase_output', '*', {TIMERANGE => [1445212800,1445299200]}
COLUMN                                   CELL
0 row(s) in 0.0900 seconds

这是唯一的两个选择吗?我把“*”放在表中的所有行中,我认为这可能是不正确的。

ippsafx7

ippsafx71#

hbase维护每个记录的时间戳和版本。
get用于根据行键检索特定记录。所以,一旦你完成了这个标准,你就可以得到不同版本和时间戳的附加选项。
扫描用于获取所有记录。同样,您可以选择指定版本和时间戳。但是,由于scan提供了整个记录列表,因此不能进行计数操作。
所以恐怕,你最好的办法是,写一张Map,缩小到扫描范围,用时间戳,并得到计数。事实上,与count shell方法相比,使用map reduce rowcounter是获得hbase计数的最佳方法。
我也做过类似的事情。从rowcounter源代码开始,经过调整添加了过滤器。对于日期,您可以维护自己的字段,也可以使用任何列限定符“最近日期”(只要您将整个记录存储到hbase中)。否则,如果行的一部分单独保存,则必须使用特定的列限定符。

相关问题