PyHive Thrift транспортная исключительная ситуация: чтение 0 байт

Я пытаюсь подключиться к Hive server-2, работающему внутри контейнера Docker (извне контейнера) через python (PyHive 0.5, python 2.7), используя пример DB-API (асинхронный)

from pyhive import hive
conn = hive.connect(host='172.17.0.2', port='10001', auth='NOSASL')

Однако я получаю следующую ошибку

Traceback (most recent call last):
  File "py_2.py", line 4, in <module>
    conn = hive.connect(host='172.17.0.2', port='10001', auth='NOSASL')
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/pyhive/hive.py", line 64, in connect
    return Connection(*args, **kwargs)
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/pyhive/hive.py", line 164, in __init__
    response = self._client.OpenSession(open_session_req)
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/TCLIService/TCLIService.py", line 187, in OpenSession
    return self.recv_OpenSession()
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/TCLIService/TCLIService.py", line 199, in recv_OpenSession
    (fname, mtype, rseqid) = iprot.readMessageBegin()
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/thrift/protocol/TBinaryProtocol.py", line 148, in readMessageBegin
    name = self.trans.readAll(sz)
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 60, in readAll
    chunk = self.read(sz - have)
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/thrift/transport/TTransport.py", line 161, in read
    self.__rbuf = BufferIO(self.__trans.read(max(sz, self.__rbuf_size)))
  File "/home/foodie/anaconda2/lib/python2.7/site-packages/thrift/transport/TSocket.py", line 132, in read
    message='TSocket read 0 bytes')
thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

Образ докера, который я использую, - это (tag: mysql_corrected). Он запускает следующие сервисы (выводимые командой jps)

992 Master
1810 RunJar
259 DataNode
2611 Jps
584 ResourceManager
1576 RunJar
681 NodeManager
137 NameNode
426 SecondaryNameNode
1690 RunJar
732 HistoryServer

Я запускаю контейнер с помощью

docker run -it -p 8088:8088 -p 8042:8042 -p 4040:4040 -p 18080:18080 -p 10002:10002 -p 10000:10000 -e 3306 -e 9084 -h sandbox -v /home/foodie/docker/w1:/usr/tmp/test rohitbarnwal7/spark:mysql_corrected bash

Кроме того, я выполняю следующие шаги для запуска сервера Hive внутри Docker-контейнера.

  1. Запустите службу MySQL: service mysqld start
  2. Перейдите в каталог / usr / local / hive: cd $HIVE_HOME
  3. Запустите сервер метастазов Hive: nohup bin/hive --service metastore &
  4. Запустите Hive сервер 2: hive --service hive-server2 (обратите внимание, что порт Thrift-сервера уже изменен на 10001 в /usr/local/hive/conf/hive-site.xml)
  5. Запустить оболочку Билайн: beeline
  6. Подключите оболочку Билайн с Hive server-2: !connect jdbc:hive2://localhost:10001/default;transportMode=http;httpPath=cliservice

Я уже попробовал следующие вещи без удачи

  1. Создание Python 2.7.3 в качестве версии Python по умолчанию внутри контейнера Docker (исходное значение по умолчанию - Python 2.6.6, Python 2.7.3 установлен внутри контейнера, но не по умолчанию)
  2. Изменение порта сервера Hive на его значение по умолчанию: 10000
  3. Попытка подключиться к серверу Hive, запустив тот же скрипт Python внутри контейнера (он все еще выдает ту же ошибку)

0 ответов

Другие вопросы по тегам