1. 程式人生 > >[bigdata-128] python3以thrift2的方式連線hbase

[bigdata-128] python3以thrift2的方式連線hbase

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