Thrift中实现按照时间戳范围操作Hbase数据

系统 2464 0

在一次做项目的过程中,要实现一个功能,功能描述为前端给定日期范围,在该日期范围内取出指定行的信息。在Thrift常用的API中,取出一行所有的数据接口为getVer(),getver()具体描述如下:

Thrift中实现按照时间戳范围操作Hbase数据

如果想取到带有时间戳的数据,有一个接口为getVerTs,getVerTs内容描述如下:

Thrift中实现按照时间戳范围操作Hbase数据

但是此接口只能取到小于该时间戳的数据,如果想取到时间戳范围内的数据还是无能为力,为了实现此功能,接着又去尝试了getVer()中参数5map的用法,以为在map中添加timestamp的限制条件就好了。

于是搜啊搜,Google,Baidu都尝试了,关于map的使用例子却找不到,于是就按照网上给的map的含义自己写,但是npm start后一大堆错误,最后实在没办法只好放弃此种方法。

然后就静下心来看了看自己写的代码,自己处理hbase返回数据的方式,忽然,恍然大悟,自己费尽心思想用map实现,其实根本不需要,只需要对其得到的数据加上限制条件就OK了。我的代码如下:

  
      
         1
      
       client.getVer
      
        (
        
          'rdga_by_plate',
          
            encodedPlate,
            
              'KEY:ID',
              
                '10000',
                
                  null,
                  
                    AsyncSearchIdAjaxQuery
                    
                      );
                    
                  
                
              
            
          
        
      
      
function AsyncSearchIdAjaxQuery(err,idValueAjaxQuery) 2 { 3 if (err) 4 { 5 console.log('getRow error:' , err); 6 } 7 else 8 { 9 console.log("The ajax startdate is:" ,dateToTimestamp(inputedStartDate)); 10 console.log("The ajax enddate is:" ,dateToTimestamp(inputedEndDate)); 11 var rowKeys = new Array(); 12 var timestampNum = 0 ; 13 var startDateTimestamp = dateToTimestamp(inputedStartDate); 14 var endDateTimestamp = dateToTimestamp(inputedEndDate); 15 for ( var key in idValueAjaxQuery) 16 { 17 // console.log("The key is:",key); 18 19 console.log('Row value:' , idValueAjaxQuery[key].value.toString()); 20 console.log('Timestamp: ' ,idValueAjaxQuery[key].timestamp.toString()); 21 if (idValueAjaxQuery[key].timestamp.toString() >= startDateTimestamp && idValueAjaxQuery[key].timestamp.toString() <= endDateTimestamp) 22 { 23 rowKeys.push(idValueAjaxQuery[key].value.toString()); 24 timestampNum++ ; 25 }
26 client.getRows ( 'rdga_by_id', rowKeys, null, AsyncSearchDetailsAjaxQuery ); 27 } 28 29 } 30 }

getVer得到的数据在idValueAjaxQuery中,它的里面包括timestamp的内容,要想实现时间戳范围内查找数据,此时在21行加上限制条件,此时符合条件的idValueAjaxQuery中的value值就会放置在rowKeys数组中,这时通过26行的getRows得到的内容就是时间戳范围内的数据。

    

Thrift中实现按照时间戳范围操作Hbase数据


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论