亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

python 調用HBase的簡單實例

asal 2017-01-12 13:18:13 256
abstrak:新來的一個工程師不懂HBase,java不熟,python還行,我建議他那可以考慮用HBase的thrift調用,完成目前的工作。首先,安裝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 ./c

新來的一個工程師不懂HBase,java不熟,python還行,我建議他那可以考慮用HBase的thrift調用,完成目前的工作。

首先,安裝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版本可能有不同)

我這里寫了些調用的腳本,供大家參考

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()

更多關于python 調用HBase的簡單實例請關注PHP中文網(wǎng)(ipnx.cn)其他文章!

Nota Keluaran

Penyertaan Popular