如何从hbase表中获取最新的样本记录(最近n小时)?

时间:2016-11-14 23:56:11

标签: hbase

大型hbase事务表中有大量记录。

来自Hbase shell:

  • 如何获取在过去6中插入/更新的样本记录 小时

  • 是否可以在最后获得插入/更新记录的计数 6个小时?

1 个答案:

答案 0 :(得分:1)

  • 如何获取过去6小时内插入/更新的样本记录?

    以下查询从hbase表中获取样本记录,该记录在过去6小时内插入/更新。

    scan 'my.table', { LIMIT =>1, TIMERANGE => [(Time.now.to_f.round()*1000).to_i-21600000, (Time.now.to_f.round()*1000).to_i]}

  • 是否可以在过去6小时内获取插入/更新记录的数量?

基于SO回答:Count number of records in a column family in an HBase table

# count_table 'test.table', { CACHE => 1000 }
# --- Count rows with caching.
#
def count_table(tablename, args = {})

    table = @shell.hbase_table(tablename)

    # Run the scanner
    scanner = table._get_scanner(args)

    count = 0
    iter = scanner.iterator

    # Iterate results
    while iter.hasNext
        row = iter.next
        count += 1
    end

    # Return the counter
    return count
end

查询是:

count_table 'my.table', { TIMERANGE => [(Time.now.to_f.round()*1000).to_i-21600000, (Time.now.to_f.round()*1000).to_i] , CACHE => 10000000}

以上查询获取过去6小时内插入/更新记录的数量。

它返回所需的结果但尚未测试w.r.t性能负载。

  

注意:虽然我已经回答了我的问题,但我仍然保留这个帖子   愿意从别人那里得到更好的答案。