python读取hbase数据和分析_如何在Python中访问HBase的数据

本文介绍了如何使用Python连接和操作HBase数据库,包括获取表名、列族信息,以及按键、列和版本获取数据的方法,代码示例详细解释了访问流程。
摘要由CSDN通过智能技术生成

4015333bc52c86838ab5bbf3150c6f45.png

慕神8447489

python访问hbase数据#!/usr/bin/pythonimport getopt,sys,timefrom thrift.transport.TSocket import TSocketfrom thrift.transport.TTransport import TBufferedTransportfrom thrift.protocol import TBinaryProtocolfrom hbase import Hbasedef usage():        print '''Usage :        -h: Show help information;        -l: Show all table in hbase;        -t {table} Show table descriptors;        -t {table} -k {key} : show cell;        -t {table} -k {key} -c {coulmn} : Show the coulmn;        -t {table} -k {key} -c {coulmn} -v {versions} : Show more version;    (write by liuhuorong@koudai.com)        '''class geilihbase:        def __init__(self):                self.transport = TBufferedTransport(TSocket("127.0.0.1", "9090"))                self.transport.open()                self.protocol = TBinaryProtocol.TBinaryProtocol(self.transport)                self.client = Hbase.Client(self.protocol)        def __del__(self):                self.transport.close()        def glisttable(self):                for table in self.client.getTableNames():                        print table        def ggetColumnDescriptors(self,table):                rarr=self.client.getColumnDescriptors(table)                if rarr:                        for (k,v) in rarr.items():                                print "%-20s\t%s" % (k,v)        def gget(self,table,key,coulmn):                rarr=self.client.get(table,key,coulmn)                if rarr:                        print "%-15s %-20s\t%s" % (rarr[0].timestamp,time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(rarr[0].timestamp/1000)),rarr[0].value)        def ggetrow(self,table,key):                rarr=self.client.getRow(table, key)                if rarr:                        for (k,v) in rarr[0].columns.items():                                print "%-20s\t%-15s %-20s\t%s" % (k,v.timestamp,time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(v.timestamp/1000)),v.value)        def ggetver(self, table, key, coulmn, versions):                rarr=self.client.getVer(table,key,coulmn, versions);                if rarr:                        for row in rarr:                                print "%-15s %-20s\t%s" % (row.timestamp,time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(row.timestamp/1000)),row.value)def main(argv):        tablename=""       key=""        coulmn=""        versions=""        try:                opts, args = getopt.getopt(argv, "lht:k:c:v:", ["help","list"])        except getopt.GetoptError:                usage()                sys.exit(2)        for opt, arg in opts:                if opt in ("-h", "--help"):                        usage()                        sys.exit(0)                elif opt in ("-l", "--list"):                        ghbase=geilihbase()                        ghbase.glisttable()                        sys.exit(0)                elif opt == '-t':                       tablename = arg                elif opt == '-k':                        key = arg                elif opt == '-c':                        coulmn = arg                elif opt == '-v':                        versions = int(arg)        if ( tablename and key and coulmn and versions ):                ghbase=geilihbase()                ghbase.ggetver(tablename, key, coulmn, versions)                sys.exit(0)        if (tablename and key and coulmn ):                ghbase=geilihbase()                ghbase.gget(tablename, key, coulmn)                sys.exit(0)        if (tablename and key ):                ghbase=geilihbase()                ghbase.ggetrow(tablename, key)                sys.exit(0)        if (tablename ):                ghbase=geilihbase()                ghbase.ggetColumnDescriptors(tablename)                sys.exit(0)        usage()        sys.exit(1)if __name__ == "__main__":        main(sys.argv[1:])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值