根据时间戳搜索最新的行

时间:2016-10-01 13:47:33

标签: python hadoop hbase nutch happybase

我正在寻找如何搜索由Nutch 2.3加载的hbase表中的最新行。

我使用了happybase和thrift,我发现的唯一例子就是这个链接https://happybase.readthedocs.io/en/happybase-0.4/tutorial.html#using-table-namespaces

1 个答案:

答案 0 :(得分:2)

我不知道python所以我在hbase shell中解释这个.. 或多或少你应该能够在python中做到这一点。

Python方式:Convert timestamp since epoch to datetime.datetime

  

如何获取最新的时间戳来传递过滤器?

     

将数据记录到时间戳   要将日期'08 / 08/16 20:56:29'从hbase日志转换为   时间戳,执行:

     hbase(main):021:0> import java.text.SimpleDateFormat
                   hbase(main):022:0> import java.text.ParsePosition
                    hbase(main):023:0> SimpleDateFormat.new("yy/MM/dd HH:mm:ss").parse("08/08/16 20:56:29", ParsePosition.new(0)).getTime()
 => 1218920189000

在上面之后你可以尝试这样的事情:

scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}


hbase(main):001:0> scan

以下是此命令的一些帮助: 扫描一张桌子;传递表名称和可选的扫描仪字典 规格。扫描仪规格可能包括以下一项或多项: TIMERANGE,FILTER,LIMIT,STARTROW,STOPROW,TIMESTAMP,MAXLENGTH, 或COLUMNS,CACHE

一些例子:

  hbase> scan '.META.'
  hbase> scan '.META.', {COLUMNS => 'info:regioninfo'}
  hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
  hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}
  hbase> scan 't1', {FILTER => "(PrefixFilter ('row2') AND (QualifierFilter (>=, 'binary:xyz'))) AND (TimestampsFilter ( 123, 456))"}
  hbase> scan 't1', {FILTER => org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}