原文链接是在    http://xiaorui.cc 

我想有些人可能不太懂python thrift scan的用法,我这边写个我自己常用的一个场景实现,查看某个列族里面以xxx开头的 …  恩, 先用happybase实现一个简单的scan,row_prefix的实现… …

跑完简单的例子,咱们来看下happybase scan函数的具体描述… …


除了用row_start,row_stop 这样的rowkey来控制数据扫描的范围外…. 如果你的rowkey是那种无时间特性的,那么你肯定会想用 setTimeRange来控制scan扫描的范围。。。。   下面是在hbase shell下进行的…. 

hbase(main):073:0> scan ‘t1′, { TIMERANGE => [1362672126412, 1362672134437]}
ROW                                      COLUMN+CELL                                                                                                         
 row1                                    column=f1:a, timestamp=1362672126412, value=value1                                                                  
1 row(s) in 0.0060 seconds

hbase(main):074:0> scan ‘t1′, { TIMERANGE => [1362672126412, 1362672134438]}
ROW                                      COLUMN+CELL                                                                                                         
 row1                                    column=f1:a, timestamp=1362672126412, value=value1                                                                  
 row1                                    column=f1:b, timestamp=1362672134437, value=value2                                                                  
1 row(s) in 0.0070 seconds

但是问题来了,查了下happybase和python原生的thrift库,都是不支持timestamp时间范围扫描的… 不支持的原因主要是thrift serve人不支持timestamp range  

我在国外的论坛看到了解决的办法,是使用hbase stargate做restful api服务。 

Cell or Row Query (Multiple Values)

GET /<table>/<row> 
  ( / ( <column> ( : <qualifier> )? 
      ( , <column> ( : <qualifier> )? )+ )? 
    ( / ( <start-timestamp> ‘,’ )? <end-timestamp> )? )? 
  ( ?v= <num-versions> )? 

详细的stargate的文档,请关注下 http://wiki.apache.org/hadoop/Hbase/Stargate

注释:   跟朋友又看了下 happybase代码库里面的issue,有人回复thrift2是支持timerange的… … 

getTimeRange
public TTimeRange getTimeRange()
setTimeRange
public TScan setTimeRange(TTimeRange timeRange)
unsetTimeRange
public void unsetTimeRange()
isSetTimeRange
public boolean isSetTimeRange()
Returns true if field timeRange is set (has been assigned a value) and false otherwise



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

关于python使用批量方式插入hbase的性能测试

这个5 1过得有些蛋疼,没有出去旅游,原本是计划去旅游,我自己把天气预报看错了,结果导致大家都没去成清凉谷….   好在昨天跟朋友们在工体的酒...

阅读全文

python使用happybase批量的操作hbase

最近在跑任务的回溯,发现有时候,速度会很慢 ,一开始确定到了 是hbase就起了一个公用的thrift,大家最近也都在导数据,搞得thrift总是挂掉 。 后来在集群...

阅读全文

python通过thrift针对hbase的性能测试

     这两天正在做mysql到hbase的数据迁移,本人java玩不转,用的是thrift hbase的手段。 一开始写入的时候,速度居然才有100,这太闹...

阅读全文

3则回应给“python使用happybase thrift库实现hbase的scan搜索”

  1. 往往说道:

    我们这里就因为时间范围扫描,用java了

  2. 往往说道:

    好文章

发表评论