python 调用HBase的简单实例
新来的一个工程师不懂HBase,java不熟,python还行,我建议他那可以考虑用HBase的thrift调用,完成目前的工作。
首先,安装thrift
下载thrift,这里,我用的是thrift-0.7.0-dev.tar.gz这个版本
tarxzfthrift-0.7.0-dev.tar.gz cdthrift-0.7.0-dev sudo./configure--with-cpp=no--with-ruby=no sudomake sudomakeinstall
然后,到HBase的源码包里,找到
src/main/resources/org/apache/hadoop/hbase/thrift/
执行
thrift--genpyHbase.thrift
mvgen-py/hbase//usr/lib/python2.4/site-packages/(根据python版本可能有不同)
我这里写了些调用的脚本,供大家参考
fromunittestimportTestCase,main fromthriftimportThrift fromthrift.transportimportTSocket fromthrift.transportimportTTransport fromthrift.protocolimportTBinaryProtocol fromhbaseimportHbase fromhbase.ttypesimportColumnDescriptor,Mutation,BatchMutation classHBaseTester: def__init__(self,netloc,port,table="staftesttable"): self.tableName=table self.transport=TTransport.TBufferedTransport( TSocket.TSocket(netloc,port)) self.protocol=TBinaryProtocol.TBinaryProtocol(self.transport) self.client=Hbase.Client(self.protocol) self.transport.open() tables=self.client.getTableNames() ifself.tableNamenotintables: self.__createTable() def__del__(self): self.transport.close() def__createTable(self): name=ColumnDescriptor(name='name') foo=ColumnDescriptor(name='foo') self.client.createTable(self.tableName, [name,foo]) defput(self,key,name,foo): name=Mutation(column="name:v",value=name) foo=Mutation(column="foo:v",value=foo) self.client.mutateRow(self.tablename,key,[name,foo]) defscanner(self,column): scanner=client.scannerOpen(self.tablename,"",[column]) r=client.scannerGet(scanner) result=[] whiler: printr[0] result.append(r[0]) r=client.scannerGet(scanner) print"Scannerfinished" returnresult classTestHBaseTester(TestCase): defsetUp(self): self.writer=HBaseTester("localhost",9090) deftearDown(self): name=self.writer.tableName client=self.writer.client client.disableTable(name) client.deleteTable(name) deftestCreate(self): tableName=self.writer.tableName client=self.writer.client self.assertTrue(self.writer.tableNameinclient.getTableNames()) columns=['name:','foo:'] foriinclient.getColumnDescriptors(tableName): self.assertTrue(iincolumns) deftestPut(self): self.writer.put("r1","n1","f1") self.writer.put("r2","n2","f2") self.writer.put("r3","n3","") self.writer.scanner("name:") if__name__=="__main__": main()
以上这篇python调用HBase的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。