Docker PyHive Thrift传输异常:读取0字节

Docker PyHive Thrift传输异常:读取0字节,docker,hive,thrift,pyhive,Docker,Hive,Thrift,Pyhive,我正在尝试使用示例通过python(PyHive0.5,Python2.7)连接到运行在docker容器内部(从容器外部)的HiveServer-2 然而,我得到以下错误 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

我正在尝试使用示例通过python(PyHive0.5,Python2.7)连接到运行在docker容器内部(从容器外部)的HiveServer-2

然而,我得到以下错误

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

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
此外,我执行以下步骤在docker容器内启动Hive服务器

  • 启动mysql服务:
    service mysqld Start
  • 切换到目录/usr/local/hive:
    cd$hive\u HOME
  • 启动配置单元元存储服务器:
    nohup bin/Hive——服务元存储&
  • 启动配置单元服务器2:
    Hive--service Hive-server2
    (请注意,
    /usr/local/Hive/conf/Hive site.xml中的thrift服务器端口已更改为10001)
  • 发射直线炮弹:
    beeline
  • 将直线外壳与Hive server-2连接:
    !连接jdbc:hive2://localhost:10001/default;transportMode=http;httpPath=cliservice

  • 我已经尝试过以下几件事,但都没有成功

  • 将python 2.7.3作为docker容器内的默认python版本(原始默认值为python 2.6.6,python 2.7.3安装在容器内,但不是默认值)
  • 将配置单元服务器端口更改为其默认值:10000
  • 试图通过在容器中运行相同的python脚本来连接配置单元服务器(仍然会出现相同的错误)

  • 在步骤6中,当尝试将beeline shell与Hive server-2连接时,在提示输入用户名和密码时按Enter键。一个小更正:不是Python v2.7.3,而是v2.7.13
    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