国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

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

2019-11-25 16:26:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

新來(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.gzcd thrift-0.7.0-devsudo ./configure --with-cpp=no --with-ruby=nosudo makesudo 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, mainfrom thrift import Thriftfrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocolfrom hbase import Hbasefrom hbase.ttypes import ColumnDescriptor, Mutation, BatchMutationclass 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的簡(jiǎn)單實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永和县| 双柏县| 两当县| 和平县| 泸西县| 石门县| 武夷山市| 绥阳县| 恩施市| 湖口县| 阳谷县| 峨眉山市| 新昌县| 鱼台县| 黄陵县| 重庆市| 电白县| 望城县| 孙吴县| 广西| 马关县| 永顺县| 抚顺市| 墨竹工卡县| 罗定市| 天津市| 揭阳市| 峨眉山市| 城固县| 石棉县| 邯郸县| 松原市| 宁阳县| 霸州市| 交口县| 龙川县| 威信县| 平邑县| 衡阳县| 于都县| 监利县|