Я знаю, что есть еще вопросы по этой проблеме, но ни один из них, похоже, не говорит, как решить эту проблему.
Я использую пакет happybase python для подключения к комиссионному серверу HBase и получаю эту ошибку при попытке вставить данные.
Я установил happybase 1.1.0 и работаю против HBase 2.0.0 с платформой данных Hortonworks.
Я запустил свой благотворительный сервер с помощью следующей команды:
/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
Заранее спасибо