[bigdata-128] python3以thrift2的方式連線hbase
阿新 • • 發佈:2018-12-21
1.hbase的版本是1.2.6。hbase必須啟動thrift2服務。
2.客戶端作業系統是ubuntu 16.04。python版本3.5
3.客戶端 安裝 thrift
3.1 官網 http://thrift.apache.org/ 3.1 獲取原始碼 git clone https://github.com/apache/thrift.git 3.2 編譯 cd thrift ./bootstrap.sh ./configure --without-java --without-php --without-nodejs --without-go make make check ##測試,確認這裡不報錯 sudo make install 注意事項:bootsrap.sh結束後,輸出資訊包括本機支援哪些語言的thrift開發,不需要語言支援都要在./configure裡面用without去掉,只留下對python的支援,否則可能會在後續帶來編譯錯誤。 3.4 pip3 install thrift
4. 下載 hbase 1.2.6
http://archive.apache.org/dist/hbase/1.2.6/hbase-1.2.6-src.tar.gz
解壓縮,找到 thrift2對應的檔案:
/home/bri/setup/hbase-1.2.6/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
5.建立一個py專案,目錄是/home/bri/tmp/hbase-thrift2-py3
5.1 cd hbase-thrift2-py3
5.2 生成hbase介面
thrift --gen py /home/bri/setup/hbase-1.2.6/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
注意,把生成的gen-py目錄修改成genpy,以免後面python3匯入出現問題。
5.3 在hbase-thirft2-py3目錄下建立main.py,原始碼如下:
import sys # 匯入前面5.步驟生成的hbase thrift介面檔案路徑 sys.path.append('genpy') sys.path.append('genpy/hbase') from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol from genpy.hbase import THBaseService from genpy.hbase.ttypes import * def main(): transport = TSocket.TSocket('192.168.199.239', 9090) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = THBaseService.Client(protocol) transport.open() tableName = str.encode('md5table') rowKey =str.encode('2E582ECB1EE09940065B8F1B91D9D528') #手機號 18717917661 get = TGet() get.row = rowKey result = client.get(tableName, get) print(result.row) print(result.columnValues) for i in result.columnValues: print(i.value) pass if __name__ == "__main__": main()