Cloudera Manager Express 5.9.0がインストールされています.Haseは、CentOS 7.3のVirtualBox vmのポート9090で動作するThriftサーバーと一緒にインストールされています。Pythonとhappybase/ThriftからHbaseに接続
私がhappybase経由で正常にインターフェースできない理由を理解したり、次のステップを特定する手助けをしてください。
私は経験豊富なJavaプログラマーで、Pythonを学んでいます。私はこの特定の環境ではないが、ネイティブインターフェイスを使用してJavaからHbaseを使用した経験があります。
- 私は9090(倹約)はリスニングとの接続を受け付けていることを検証してい
- など、私はデータを挿入、テーブルを作成するためのHBaseシェルを使用することができることを検証しています。
- 私は、Thriftサーバーがhappybase接続パラメータと同じプロトコル/トランスポート設定で実行されていることを検証したと思います。私が実行してThift Webサービスマネージャを持っている
[[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] ~]#
:
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からほぼ直接取得報告するポート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