1 #!/usr/bin/python
2
3 importgetopt,sys,time4 from thrift.transport.TSocket importTSocket5 from thrift.transport.TTransport importTBufferedTransport6 from thrift.protocol importTBinaryProtocol7 from hbase importHbase8
9 defusage():10 print '''Usage :11 -h: Show help information;12 -l: Show all table in hbase;13 -t {table} Show table descriptors;14 -t {table} -k {key} : show cell;15 -t {table} -k {key} -c {coulmn} : Show the coulmn;16 -t {table} -k {key} -c {coulmn} -v {versions} : Show more version;17 (write by liuhuorong@koudai.com)18 '''
19
20 classgeilihbase:21 def __init__(self):22 self.transport = TBufferedTransport(TSocket("127.0.0.1", "9090"))23 self.transport.open()24 self.protocol =TBinaryProtocol.TBinaryProtocol(self.transport)25 self.client =Hbase.Client(self.protocol)26 def __del__(self):27 self.transport.close()28 defglisttable(self):29 for table inself.client.getTableNames():30 printtable31 defggetColumnDescriptors(self,table):32 rarr=self.client.getColumnDescriptors(table)33 ifrarr:34 for (k,v) inrarr.items():35 print "%-20s\t%s" %(k,v)36 defgget(self,table,key,coulmn):37 rarr=self.client.get(table,key,coulmn)38 ifrarr:39 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)40 defggetrow(self,table,key):41 rarr=self.client.getRow(table, key)42 ifrarr:43 for (k,v) inrarr[0].columns.items():44 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)45 defggetver(self, table, key, coulmn, versions):46 rarr=self.client.getVer(table,key,coulmn, versions);47 ifrarr:48 for row inrarr:49 print "%-15s %-20s\t%s" % (row.timestamp,time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(row.timestamp/1000)),row.value)50
51 defmain(argv):52 tablename=""
53 key=""
54 coulmn=""
55 versions=""
56 try:57 opts, args = getopt.getopt(argv, "lht:k:c:v:", ["help","list"])58 exceptgetopt.GetoptError:59 usage()60 sys.exit(2)61 for opt, arg inopts:62 if opt in ("-h", "--help"):63 usage()64 sys.exit(0)65 elif opt in ("-l", "--list"):66 ghbase=geilihbase()67 ghbase.glisttable()68 sys.exit(0)69 elif opt == '-t':70 tablename =arg71 elif opt == '-k':72 key =arg73 elif opt == '-c':74 coulmn =arg75 elif opt == '-v':76 versions =int(arg)77 if ( tablename and key and coulmn andversions ):78 ghbase=geilihbase()79 ghbase.ggetver(tablename, key, coulmn, versions)80 sys.exit(0)81 if (tablename and key andcoulmn ):82 ghbase=geilihbase()83 ghbase.gget(tablename, key, coulmn)84 sys.exit(0)85 if (tablename andkey ):86 ghbase=geilihbase()87 ghbase.ggetrow(tablename, key)88 sys.exit(0)89 if(tablename ):90 ghbase=geilihbase()91 ghbase.ggetColumnDescriptors(tablename)92 sys.exit(0)93 usage()94 sys.exit(1)95
96 if __name__ == "__main__":97 main(sys.argv[1:])