python解析hbase访问结果(TRowResult)的方式

本文介绍了在Python中处理HBase扫描结果时,如何解析TRowResult对象。通过示例展示了获取id、处理多行数据和单行数据的方法,强调了TRowResult在集合和单行数据中的不同,并提供了获取特定列族和单元格值的代码片段。
摘要由CSDN通过智能技术生成

我在做hbase scan的时候搞的有点头晕,后来多看了几遍后,才发现一点规律,现记下。首先是定义hbase的client,这个都差不多:

transport = TTransport.TBufferedTransport(TSocket.TSocket(host, port))
protocol = TBinaryProtocol.TBinaryProtocol(transport)
self.client = Hbase.Client(protocol)
transport.open()

然后开始扫描,首先需要定义一个扫描器,它是以scannerOpen开头的

self.client.scannerOpen(para...)           //单行扫描器
self.client.scannerOpenWithScan(para...)   //多行扫描器
self.client.scannerOpenWithStop(para...)   //区间扫描器
self.client.scannerOpenWithPrefix(para...) //以xxx开头的row的前缀扫描器
self.client.scannerOpenTs(para...)         //查询小于某个时间的记录集
                                          //scannerOpenTs(table,"",None, 1488791536402L, None)

接着就开始扫描,它是以scannerGet开头的

result = self.client.scannerGet(scanner)    //如果上面定义的是单行扫描器,就用它
result = self.client.scannerGetList(id, 30) //如果上面定义的是多行扫描器,就用它

所以你要知道,虽然这两个result都是TRowResult类型,但数据类型是不一样的,一个是集合,一个是单行。


接下来介绍一下如何解析TRowResult

首先拿到id
id = client.scannerOpenWithScan(tableName, TScan(), None)
如果是拿多行数据
//拿30行数据
result = self.client.scannerGetList(id, 30)
如果是拿单行数据
result = self.client.scannerGet(id)

这两种方式都会返回一个TRowResult的对象结果集,大概是这个样子的

TRowResult(sortedColumns=None, columns={
   'info:gisx': TCell(timestamp=1488510046531L, value='121.481677'), 'info:gisy': TCell(timestamp=1488510046531L, value='31.303407'), 'type:': TCell(timestamp=1488510046531L, value='4')}, row='row0')
TRowResult(sortedColumns=None, columns={
   'info:gisx': TCell(timestamp=1488510046536L, value='121.577649'), 'info:gisy': TCell(timestamp=1488510046536L, value='31.294134'), 'type:': TCell(timestamp=1488510046536L, value='4')}, row='row1')
TRowResult(sortedColumns=None, columns={
   'info:gisx': TCell(timestamp=1488510046556L, value='121.39321899'), 'info:gisy': TCell(timestamp=1488510046556L, value='31.2781105'), 'type:': TCell(timestamp=1488510046556L, value='4')}, row='row10')
TRowResult(sortedColumns=None, columns={
   'info:gisx': TCell(timestamp=1488510046949L, value='121.30570984'), 'info:gisy': TCell(timestamp=1488510046949L, value='31.14129066'), 'type:': TCell(timestamp=1488510046949L, value='4')}, row='row100')
TRowResult(sortedColumns=None, columns={
   'info:gisx': TCell(timestamp=1488510048712L, value='121.364975'), 'info:gisy': TCell(timestamp=1488510048712L, value='31.224097'), 'type:': TCell(timestamp=1488510048712L, value='4')}, row='row1000')
TRowResult(sortedColumns=None, columns={
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值