Thrift Hbase Python -> thrift.transport.TTransport.TTransportException: TSocket читает 0 байт - PullRequest
0 голосов
/ 02 апреля 2019

Почему соединение не устанавливается и приводит к thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

Я пытаюсь подключиться к hbase из python с помощью thrift. Я работаю на кластере cloudera cdh5.14, а на нем работает Thrift-сервер. hbase версия 1.2.0

Прошло три недели, и я уже попробовал следующее: Благодаря поиску я знаю, что это связано с экономией независимо от python, happybase или hbase. Это кластер с керберизацией, в котором были внесены изменения в протокол и режим транспорта, как упоминалось в первой ссылке: Я думаю, что решение должно работать, если использовать happybase тоже. 1) Cloudera / CDH v6.1.x + Python HappyBase v1.1.0: TTransportException (type = 4, message = 'TSocket read 0 bytes')

2) TSocket читает 0 байтов - версия happybase 0.8

3) тайм-аут для долгосрочного вызова: thrift.transport.TTransport.TTransportException: TSocket читает 0 байтов

4) TSocket читает 0 байтов, обращаясь к кусту с python

5) TTransportException: TSocket читает 0 байтов при обращении к Hive через Python

6) ошибка сброса Python `` TSocket read 0 bytes```

7) Неопределенное исключение 'TTransportException' с сообщением 'TSocket read 0 bytes'

8) TSocket читает 0 байт Apache Thrift MongoDB

from thrift.transport import TSocket
from thrift.protocol import TCompactProtocol
from thrift.transport.TTransport import TFramedTransport
from hbase import Hbase


(host, port) = ("cluster.hostname", 9090)
transport = TFramedTransport(TSocket.TSocket(host, port))
protocol = TCompactProtocol.TCompactProtocol(transport)
client = Hbase.Client(protocol)

transport.open()
print(client.getTableNames())

Фрагмент ошибки похож на большинство приведенных выше ссылок

Traceback (most recent call last):
  File "testing.py", line 14, in <module>
    print(client.getTableNames())
  File "/home/caston/final_attempt/gen-py/hbase/Hbase.py", line 786, in getTableNames
    return self.recv_getTableNames()
  File "/home/caston/final_attempt/gen-py/hbase/Hbase.py", line 796, in recv_getTableNames
    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
  File "/usr/lib64/python2.7/site-packages/thrift/protocol/TCompactProtocol.py", line 310, in readMessageBegin
    proto_id = self.__readUByte()
  File "/usr/lib64/python2.7/site-packages/thrift/protocol/TCompactProtocol.py", line 289, in __readUByte
    result, = unpack('!B', self.trans.readAll(1))
  File "/usr/lib64/python2.7/site-packages/thrift/transport/TTransport.py", line 58, in readAll
    chunk = self.read(sz - have)
  File "/usr/lib64/python2.7/site-packages/thrift/transport/TTransport.py", line 276, in read
    self.readFrame()
  File "/usr/lib64/python2.7/site-packages/thrift/transport/TTransport.py", line 280, in readFrame
    buff = self.__trans.readAll(4)
  File "/usr/lib64/python2.7/site-packages/thrift/transport/TTransport.py", line 58, in readAll
    chunk = self.read(sz - have)
  File "/usr/lib64/python2.7/site-packages/thrift/transport/TSocket.py", line 120, in read
    message='TSocket read 0 bytes')
thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

Любая помощь будет очень признательна!

...