我知道这个问题还有更多的问题,但是似乎没有人说如何解决这个问题。
我正在使用happybase python软件包连接到HBase thrift服务器,尝试插入数据时遇到此错误。
我安装了happybase 1.1.0,并且正在Hortonworks Data Platform上针对HBase 2.0.0进行工作。
我用以下命令启动了我的二手服务器:
/usr/hdp/current/hbase-master/bin/hbase-daemon.sh start thrift -p 12345
我正在尝试使用以下代码连接到服务器:
import happybase
try:
connection = happybase.Connection('HBaseMaster', port=12345, ocol='binary')
table = connection.table('images_tbc')
table.put("test_key", {"mycf:field": "test_data"})
except Exception as e:
print('HBase insert error: '+ str(e))
尝试放入数据时出现错误“无协议版本头”。
这是异常堆栈跟踪:
Traceback (most recent call last):
File "/usr/local/airflow/dags/Helpers.py", line 161,
in insertImageIntoHBase
table.put(rowKey, {"raw_data:image_bytes": data})
File "/usr/local/lib/python3.6/site-packages/happybase/table.py", line 464,
in put
batch.put(row, data)
File "/usr/local/lib/python3.6/site-packages/happybase/batch.py", line 137,
in __exit__
self.send()
File "/usr/local/lib/python3.6/site-packages/happybase/batch.py", line 60,
in send
self._table.connection.client.mutateRows(self._table.name, bms, {})
File "/usr/local/lib/python3.6/site-packages/thriftpy/thrift.py", line 198,
in _req
return self._recv(_api)
File "/usr/local/lib/python3.6/site-packages/thriftpy/thrift.py", line 210,
in _recv
fname, mtype, rseqid = self._iprot.read_message_begin()
File "thriftpy/protocol/cybin/cybin.pyx", line 439,
in cybin.TCyBinaryProtocol.read_message_begin
(thriftpy/protocol/cybin/cybin.c:6470) cybin.ProtocolError: No protocol version header
提前谢谢
答案 0 :(得分:0)
我对happybase不太了解,但是错误可以追溯到this piece of code
由此可以推断出一端启用了严格的读/写功能(可能是客户端),而另一端(服务器)则没有。我不知道的是,这将在happybase中进行配置。