Ich habe installiert Cloudera Manager Express 5.9.0 HBase, mit Thrift-Server auf Port 9090 auf CentOS 7.3 in einer VirtualBox VM ausgeführt wird.Verbinden mit Hbase von Python und happybase/Thrift
Bitte helfen Sie herauszufinden, warum ich nicht in der Lage bin über happybase erfolgreich zu kommunizieren, oder helfen Sie bei der Identifizierung der nächsten Schritte.
Ich bin ein erfahrener Java-Programmierer, der Python lernt. Ich habe Erfahrung mit Hbase von Java mit der nativen Schnittstelle, obwohl nicht in dieser spezifischen Umgebung.
- Ich habe bestätigt, dass ich hbase Shell-Tabellen erstellen können, legen Sie Daten usw.
- Ich habe bestätigt, dass 9090 (Sparsamkeit) hört und Verbindungen zu akzeptieren.
- Ich glaube, ich habe bestätigt, dass der Thrift-Server mit den gleichen Protokoll/Transporteinstellungen wie die happybase Verbindungsparameter ausgeführt wird.
Python Script praktisch direkt aus happybase Howto genommen:
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
}
)
Fehlermeldung, die ich nicht große Referenz finden können:
[[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] ~]#
I Thift Web-Service-Manager ausgeführt haben auf Port 9095, die berichtet:
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
Any er LP wird sehr geschätzt. Vielen Dank.
sind Sie sicher, dass die Sparsamkeit 1 (nicht thrift2) Daemon verwendet wird, mit dem richtigen Protokoll und Transport? –
Wouter - Wetten, dass Sie Recht haben. Ich war mir der Unterschiede zwischen Thrift1/2 und dem Fehlen der Unterstützung von Thrift² happybase nicht bewusst. Ich werde die Antwort akzeptieren, wenn Sie als Antwort posten. – starvingmind