2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

python 調(diào)用HBase 范例

 tim_spac163 2014-06-19
python 調(diào)用HBase 實(shí)例
新來(lái)的一個(gè)工程師不懂HBase,java不熟,python還行,我建議他那可以考慮用HBase的thrift調(diào)用,完成目前的工作。
首先,安裝thrift
下載thrift,這里,我用的是thrift-0.7.0-dev.tar.gz 這個(gè)版本
tar xzf thrift-0.7.0-dev.tar.gz
cd thrift-0.7.0-dev
sudo ./configure  --with-cpp=no --with-ruby=no
sudo make
sudo make install



然后,到HBase的源碼包里,找到
src/main/resources/org/apache/hadoop/hbase/thrift/
執(zhí)行
 thrift --gen py Hbase.thrift
 mv gen-py/hbase/ /usr/lib/python2.4/site-packages/ (根據(jù)python版本可能有不同)


我這里寫(xiě)了些調(diào)用的腳本,供大家參考

from unittest import TestCase, main
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol

from hbase import Hbase
from hbase.ttypes import ColumnDescriptor, Mutation, BatchMutation
class HBaseTester:

    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()
        if self.tableName not in tables:
            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])
    
    def put(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])
    
    def scanner(self,column):
        scanner = client.scannerOpen(self.tablename,"",[column])
				r = client.scannerGet(scanner)
				result= []
        while r:
          print r[0]
          result.append(r[0])
          r = client.scannerGet(scanner)
        print "Scanner finished"
        return result
     
    
        
        
        
          
class TestHBaseTester(TestCase):
    
    def setUp(self):
        self.writer = HBaseTester("localhost", 9090)

    def tearDown(self):
        name = self.writer.tableName
        client = self.writer.client
        client.disableTable(name)
        client.deleteTable(name)


    def testCreate(self):
        tableName = self.writer.tableName
        client = self.writer.client
        self.assertTrue(self.writer.tableName in client.getTableNames())
        columns =['name:','foo:']
        for i in client.getColumnDescriptors(tableName):
            self.assertTrue(i in columns)
            
    def testPut(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()





    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多