乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python 調(diào)用HBase 范例

       tim_spac163 2014-06-19
      python 調(diào)用HBase 實例
      新來的一個工程師不懂HBase,java不熟,python還行,我建議他那可以考慮用HBase的thrift調(diào)用,完成目前的工作。
      首先,安裝thrift
      下載thrift,這里,我用的是thrift-0.7.0-dev.tar.gz 這個版本
      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版本可能有不同)
      


      我這里寫了些調(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()
      
      
      
      


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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多