Ошибка вставки HBase: нет заголовка версии протокола - PullRequest
0 голосов
/ 25 марта 2019

Я знаю, что есть еще вопросы по этой проблеме, но ни один из них, похоже, не говорит, как решить эту проблему.

Я использую пакет 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

Заранее спасибо

1 Ответ

0 голосов
/ 25 марта 2019

Я не знаю много о happybase, но ошибка восходит к этой части кода

Из этого можно сделать вывод, что на одном конце разрешено строгое чтение / запись (вероятно, клиент), а другой конец (сервер) - нет.Что я не могу сказать, так это то, где это должно быть настроено в happybase.

...