我已經安裝了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非常感謝。謝謝。
你肯定勤儉節約1(不thrift2)守護程序時,用正確的協議和傳輸? –
Wouter - 打賭你是對的。我並不知道Thrift1/2的差異,也沒有Thrift²快樂基地的支持。如果您發佈答案,我會接受答案。 – starvingmind