为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Python中访问HBase的数据

/ 猿问

如何在Python中访问HBase的数据

临摹微笑 2018-10-01 16:16:55
查看完整描述

1 回答

?
慕神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:])


查看完整回答
反对 回复 2018-10-24

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信