使用插入的时间戳根据时间段获取hbase表行数的最简单方法是什么?我只发现使用:
hbase> count ‘t1’, INTERVAL => 100000这并不能解决我的问题。似乎还有另一个选择,但我得到的结果是0吗?
hbase> get 'hbase_output', '*', {TIMERANGE => [1445212800,1445299200]}
COLUMN CELL
0 row(s) in 0.0900 seconds这是做这件事的唯一两个选择吗?我为表中的所有行添加了'*',并认为这可能是不正确的。
发布于 2015-10-22 02:19:45
HBase维护每条记录的时间戳和版本。
get用于根据行键检索特定的记录。因此,一旦您满足了该标准,您就可以获得针对不同版本和时间戳的附加选项。
扫描用于获取所有记录。同样,您可以选择指定版本和时间戳。但是,由于scan会给出整个记录列表,所以不能进行计数操作。
所以,我担心,你最好的选择是,写一个地图缩减到扫描,与时间戳范围,并获得计数。事实上,与count shell方法相比,使用map reduce行计数器是获取Hbase计数的最佳方法。
我也做过类似的事情。从行计数器源代码开始,并调整以添加筛选器。对于date,您可以维护自己的字段,也可以使用任何列限定符recent date(只要您将整个记录存储到Hbase中)。否则,如果要单独保存行的某些部分,则必须使用特定的列限定符。
发布于 2021-06-02 17:13:03
从HBase 2.0开始,您可以为count命令指定过滤器。
例如:
hbase> count 't1', FILTER => "(QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"https://issues.apache.org/jira/browse/HBASE-18001
https://github.com/apache/hbase/blob/master/hbase-shell/src/main/ruby/shell/commands/count.rb
https://stackoverflow.com/questions/33242202
复制相似问题