2017-01-16 103 views
0

我已經安裝了Cloudera Manager Express 5.9.0安裝HBase,Thrift服務器在VirtualBox vm中的CentOS 7.3上的端口9090上運行。從Python和happybase/Thrift連接到Hbase

請幫助弄清楚爲什麼我無法通過happybase成功連接,或幫助確定下一步要追求的步驟。

我是一名經驗豐富的Java程序員,學習Python。我有使用本地接口從Java使用Hbase的經驗,雖然不是在這個特定的環境中。

  • 我已經驗證,我可以使用HBase的殼創建表,插入數據等
  • 我已經證實,9090(節儉)監聽和接受連接。
  • 我想我已經驗證了Thrift服務器運行時使用與happybase連接參數相同的協議/傳輸設置。

    import happybase 
    
    connection = happybase.Connection(host='localhost',port=9090,transport='buffered', protocol='compact') 
    
    connection.create_table('mytable', 
        {'cf1': dict(max_versions=10), 
        'cf2': dict(max_versions=1, block_cache_enabled=False), 
        'cf3': dict(), # use defaults 
        } 
    ) 
    

    錯誤信息,我無法找到很好的參考:

的Python腳本happybase HOWTO採取幾乎直接

[[email protected] ~]# python testhbase.py 
Traceback (most recent call last): 
    File "testhbase.py", line 10, in <module> 'cf3': dict(), # use defaults 
    File "build/bdist.linux-x86_64/egg/happybase/connection.py", line 311, in create_table 
    File "/usr/lib64/python2.7/site-packages/thriftpy/thrift.py", line 198, in _req return self._recv(_api) 
    File "/usr/lib64/python2.7/site-packages/thriftpy/thrift.py", line 210, in _recv fname, mtype, rseqid = self._iprot.read_message_begin() 
    File "/usr/lib64/python2.7/site-packages/thriftpy/protocol/compact.py", line 147, in read_message_begin % proto_id) 
thriftpy.protocol.exc.TProtocolException: TProtocolException(type=4) 
[[email protected] ~]# 

我Thift Web服務管理器上運行其中報告的端口9095:

HBase Version 1.2.0-cdh5.9.0, rUnknown HBase version and revision 
Thrift Impl Type threadpool Thrift RPC engine implementation type chosen by this Thrift server 
Compact Protocol true Thrift RPC engine uses compact protocol 
Framed Transport false Thrift RPC engine uses framed transport 

任何他lp非常感謝。謝謝。

+0

你肯定勤儉節約1(不thrift2)守護程序時,用正確的協議和傳輸? –

+0

Wouter - 打賭你是對的。我並不知道Thrift1/2的差異,也沒有Thrift²快樂基地的支持。如果您發佈答案,我會接受答案。 – starvingmind

回答

1

我想你沒有使用支持的thrift守護進程版本。

你確定使用了thrift 1(不是thrift2)守護進程,有正確的協議和傳輸嗎?

+0

Happybase只支持Thrift1。對於Thrift2的python支持,試試這個:https://github.com/apache/hbase/blob/master/hbase-examples/src/main/python/thrift2/DemoClient.py – starvingmind

+0

@wouterbolsterlee我在哪裏可以看到我的hbase安裝使用Thrift1還是Thrift2? – Stanko