python利用thrift服務(wù)讀取hbase數(shù)據(jù)的方法
因工作需要用python通過hbase的thrift服務(wù)讀取Hbase表數(shù)據(jù),發(fā)現(xiàn)公司的測試環(huán)境還不支持,于是自己動(dòng)手準(zhǔn)備環(huán)境,在此我將在安裝步驟盡可能描述清楚,旨在給第一次動(dòng)手安裝的朋友,此過程親測成功!
安裝過程如下:
1、首先確保hbase安裝測試成功,再者確認(rèn)下hbase的thrift服務(wù)是否啟動(dòng),注意目前的Hbase(本文基于版本0.98.17)有兩套thrift接口thrift和thrift2,本文使用thrift,啟動(dòng)命令:hbase thrift -p 9090 start,確保該端口沒有被占用,使用lsof -i:9090查看),本公司測試環(huán)境該端口被占用,如果被占用換一個(gè)沒有被占用的端口即可;
2、安裝thrift,去官網(wǎng)下載thrift:http://thrift.apache.org/download,本人使用 thrift-0.10.0.tar.gz ,下載好后編譯安裝,解壓后進(jìn)入安裝目錄/home/hadoop/thrift-0.10.0,分別執(zhí)行./configure make,make,sudo make install,注意這邊可能因各環(huán)境不同可能遇到問題,具體安裝所需環(huán)境請參考官網(wǎng):http://thrift.apache.org/docs/install/centos,安裝之后可以用thrift -version命令測試是否安裝成功,安裝成功后會(huì)顯示安裝的版本;
3、確保1和2沒有問題,接下來需要生成python腳本需要導(dǎo)入的hbase相關(guān)模塊,首先去官網(wǎng)下載hbase源碼,注意雖然本公司用的hbase版本是0.98.17但是只要版本相差不大都可以使用,本人使用的是 hbase-0.98.24-src.tar.gz,下載解壓后找到thrift目錄:hbase-0.98.24/hbase-thrift/src/main/resources/org/apache/hadoop/hbase,該目錄下有兩個(gè)thrift服務(wù),進(jìn)入thrift后執(zhí)行thrift --gen pyHbase.thrift,不出現(xiàn)問題會(huì)在該thrift目錄下生成目錄 gen-py,里面具體是hbase模塊,將該目錄名稱改為hbase,并拷貝進(jìn)python模塊包:cp -r hbase /usr/lib/python2.7/site-packages/,至此python需要使用的hbase模塊已經(jīng)準(zhǔn)備好;
4、寫python腳本測試
#! /usr/bin/python
import sys
sys.path.append('/usr/lib/python2.7/site-packages/hbase') # 引入正確的hbase模塊路徑,測試過可刪除
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 *
transport = TSocket.TSocket('101.71.51.221', 9099)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)
transport.open()
tableName = 'hb_vender'
rowKey = '17_bcc5f02a876b010cbcd3fb2f82ab5b8e_43_111_57_437b9e2a-257c-4115-9570-bcd61741b3dc'
result = client.getRow(tableName, rowKey, None)
print result
for r in result:
print 'the row is ' , r.row
print 'the values is ' , r.columns.get('a:venderName').value
注意這邊可能出現(xiàn):ImportError: No module named six,因?yàn)樾枰惭bsix,如果已經(jīng)安裝pip,使用pip install six,如果沒有安裝用root執(zhí)行安裝:easy_install six,安裝成功后執(zhí)行腳本測試成功!
以上這篇python利用thrift服務(wù)讀取hbase數(shù)據(jù)的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用os模塊和fileinput模塊來操作文件目錄
這篇文章主要介紹了Python編程中使用os模塊和fileinput模塊來操作文件的方法,包括獲取路徑和創(chuàng)建愛你刪除目錄等基本操作的例子,需要的朋友可以參考下2016-01-01
Jmeter如何使用BeanShell取樣器調(diào)用Python腳本
這篇文章主要介紹了Jmeter使用BeanShell取樣器調(diào)用Python腳本,文章圍繞Jmeter調(diào)用Python腳本的相關(guān)詳情展開標(biāo)題內(nèi)容,需要的小伙伴可以參考一下2022-03-03
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)通過公共鍵對字典列表排序算法示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)通過公共鍵對字典列表排序算法,結(jié)合實(shí)例形式分析了Python基于operator模塊中的itemgetter()函數(shù)對字典進(jìn)行排序的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
解決py2exe打包后,總是多顯示一個(gè)DOS黑色窗口的問題
今天小編就為大家分享一篇解決py2exe打包后,總是多顯示一個(gè)DOS黑色窗口的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python標(biāo)準(zhǔn)庫學(xué)習(xí)之psutil內(nèi)存詳解
本篇文章給大家介紹一個(gè)Python標(biāo)準(zhǔn)庫中的psutil模塊,它是一個(gè)跨平臺庫,下面來學(xué)習(xí)一下器常用的功能及使用方法吧,有需要的同學(xué)可以借鑒參考下2021-09-09
基于Flask框架添加多個(gè)AI模型的API并進(jìn)行交互
這篇文章主要介紹了如何基于 Flask 框架開發(fā) AI 模型 API 管理系統(tǒng),允許用戶添加、刪除不同 AI 模型的 API 密鑰,感興趣的可以了解下2025-03-03
Python+PuLP實(shí)現(xiàn)線性規(guī)劃的求解
線性規(guī)劃(Linear?programming),在線性等式或不等式約束條件下求解線性目標(biāo)函數(shù)的極值問題,常用于解決資源分配、生產(chǎn)調(diào)度和混合問題。本文將利用PuLP實(shí)現(xiàn)線性規(guī)劃的求解,需要的可以參考一下2022-04-04

