欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 調(diào)用HBase的簡單實(shí)例

 更新時間:2016年12月18日 12:09:23   投稿:jingxian  
下面小編就為大家?guī)硪黄猵ython 調(diào)用HBase的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

新來的一個工程師不懂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()

以上這篇python 調(diào)用HBase的簡單實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于matplotlib中ion()和ioff()的使用詳解

    基于matplotlib中ion()和ioff()的使用詳解

    這篇文章主要介紹了基于matplotlib中ion()和ioff()的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python 實(shí)現(xiàn)客戶端與服務(wù)端的通信

    python 實(shí)現(xiàn)客戶端與服務(wù)端的通信

    這篇文章主要介紹了python 實(shí)現(xiàn)客戶端與服務(wù)端的通信的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python編程進(jìn)階代碼邏輯分離指南

    Python編程進(jìn)階代碼邏輯分離指南

    在?Python?編程中,適當(dāng)?shù)拇a邏輯分離可以幫助降低復(fù)雜度、提高可讀性,減少大量的?if-else?結(jié)構(gòu),本文將深入探討如何使用不同方法來改進(jìn)代碼結(jié)構(gòu),降低對?if-else?結(jié)構(gòu)的依賴
    2023-12-12
  • Python 字符串的有關(guān)知識詳解

    Python 字符串的有關(guān)知識詳解

    這篇文章主要為大家介紹了Python的字符串,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助,希望能夠給你帶來幫助
    2021-11-11
  • Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實(shí)例

    Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實(shí)例

    這篇文章主要為大家介紹了Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Python-re中search()函數(shù)的用法詳解(查找ip)

    Python-re中search()函數(shù)的用法詳解(查找ip)

    這篇文章主要介紹了Python-re中search()函數(shù)的用法-----查找ip,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Python中使用zip函數(shù)的七重境界解析

    Python中使用zip函數(shù)的七重境界解析

    這篇文章主要介紹了Python中使用zip函數(shù)的七重境界,重點(diǎn)介紹了Python中功能強(qiáng)大的zip 函數(shù)的多種用法,并給出了相應(yīng)的代碼示例,需要的朋友可以參考下
    2022-12-12
  • OpenCV-Python實(shí)現(xiàn)凸包的獲取

    OpenCV-Python實(shí)現(xiàn)凸包的獲取

    凸包是一個計(jì)算幾何中的概念,在圖像處理過程中,我們常常需要尋找圖像中包圍某個物體的凸包,本文就使用OpenCV實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • Pandas?Matplotlib保存圖形時坐標(biāo)軸標(biāo)簽太長導(dǎo)致顯示不全問題的解決

    Pandas?Matplotlib保存圖形時坐標(biāo)軸標(biāo)簽太長導(dǎo)致顯示不全問題的解決

    在使用matplotlib作圖的時候,有的時候會遇到畫圖時顯示不全和圖片保存時不完整的問題,這篇文章主要給大家介紹了關(guān)于Pandas?Matplotlib保存圖形時坐標(biāo)軸標(biāo)簽太長導(dǎo)致顯示不全問題的解決方法,需要的朋友可以參考下
    2022-06-06
  • pytorch 同步機(jī)制的實(shí)現(xiàn)

    pytorch 同步機(jī)制的實(shí)現(xiàn)

    在PyTorch中,當(dāng)多個算子和內(nèi)核被并行執(zhí)行時,PyTorch 通過 CUDA 的流和事件機(jī)制來管理并發(fā)和同步,本文就來介紹一下pytorch 同步機(jī)制,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09

最新評論