HBase插入错误:无协议版本标头

时间:2019-03-25 09:53:07

标签: python hbase thrift

我知道这个问题还有更多的问题,但是似乎没有人说如何解决这个问题。

我正在使用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

提前谢谢

1 个答案:

答案 0 :(得分:0)

我对happybase不太了解,但是错误可以追溯到this piece of code

由此可以推断出一端启用了严格的读/写功能(可能是客户端),而另一端(服务器)则没有。我不知道的是,这将在happybase中进行配置。