python thrift hbase安裝連接


默認已裝好

  1. hbase,我的版本是hbase-0.98.24,並運行
  2. python 2.7.x

步驟:

  1. sudo apt-get install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config,安裝這些必要的包和庫,官網的是libboost1.55-all-dev,但是我是用的是ubuntu16.04 LTS好像沒這么低的版本,所以使用了libboost-all-dev替代

  2. 安裝boost_1_60_0.tar.gz,這一步要好長時間

    1. wget http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz
    2. tar xvf boost_1_60_0.tar.gz
    3. cd boost_1_60_0
    4. ./bootstrap.sh
    5. sudo ./b2 install
  3. 下載thrift,

    1. download 地址
    2. tar thrift-0.10.0.tar.gz
    3. cd thrift-0.10.0.tar.gz
    4. ./configure && make
    5. sudo make install
  4. 檢驗thrift安裝

    root@ubuntu:/home/wasdns/thrift# thrift -version
    Thrift version 1.0.0-dev
    

    如果出錯參考 http://www.cnblogs.com/qq952693358/p/6193842.html

    一般我們在Linux下執行某些外部程序的時候可能會提示找不到共享庫的錯誤, 比如:
    tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

    原因一般有兩個, 一個是操作系統里確實沒有包含該共享庫(lib.so.文件)或者共享庫版本不對, 遇到這種情況那就去網上下載並安裝上即可.

    另外一個原因就是已經安裝了該共享庫, 但執行需要調用該共享庫的程序的時候, 程序按照默認共享庫路徑找不到該共享庫文件.

    root@ubuntu:/home/wasdns/thrift# cat /etc/ld.so.conf
    include /etc/ld.so.conf.d/*.conf
    
    root@ubuntu:/home/wasdns/thrift# echo "/usr/local/lib" >> /etc/ld.so.conf
    root@ubuntu:/home/wasdns/thrift# cat /etc/ld.so.conf
    include /etc/ld.so.conf.d/*.conf
    
    /usr/local/lib
    root@ubuntu:/home/wasdns/thrift# ldconfig
    root@ubuntu:/home/wasdns/thrift# thrift -version
    Thrift version 1.0.0-dev
    
  5. 安裝完成后到hbase的目錄下,找到Hbase.thrift,該文件一般在hbase目錄下的src/main/resources/org/apache/hadoop/hbase/thrift。如果沒有,那么下載響應的源碼安裝包,把其中的hbase-thrift目錄下的src復制到hbase目錄下。

    1. thrift --gen py Hbase.thrift 會生成gen-py文件夾,將其修改成hbase
    2. sudo pip install thrift 安裝python的thrift庫
    3. bin/hbase-daemon.sh start thrift 啟動hbase的thrift服務,默認端口是9090
    4. 創建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('localhost', 9090);
        
      transport = TTransport.TBufferedTransport(transport)
        
      protocol = TBinaryProtocol.TBinaryProtocol(transport);
        
      client = Hbase.Client(protocol)
      transport.open()
        
        
      contents = ColumnDescriptor(name='cf:', maxVersions=1)
      client.createTable('test', [contents])
        
      print client.getTableNames()
      
      執行代碼,成功后,進入hbase的shell,用命令list可以看到剛剛的test表已經創建成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM