Python配置单元:thrift.transport.ttTransport.ttTransportException:无

Python配置单元:thrift.transport.ttTransport.ttTransportException:无,python,hive,Python,Hive,假设配置单元安装在“g”集群中。我没有访问Gold Cluster的权限。我正在“s”集群中进行python开发工作。我可以从“s”群集访问配置单元并运行查询 我有以下代码可以从运行在“s”集群中的Python脚本连接到配置单元 some_table是配置单元中已存在的表。我想执行一个简单的select*fromsome_table命令来获得一些结果 import sys sys.path.append("/usr/lib/hive/lib/py") from hive_service imp

假设配置单元安装在“g”集群中。我没有访问Gold Cluster的权限。我正在“s”集群中进行python开发工作。我可以从“s”群集访问配置单元并运行查询

我有以下代码可以从运行在“s”集群中的Python脚本连接到配置单元

some_table
是配置单元中已存在的表。我想执行一个简单的
select*fromsome_table
命令来获得一些结果

import sys
sys.path.append("/usr/lib/hive/lib/py")

from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol


transport = TSocket.TSocket('what-ever-server', what-ever-port)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)

client = ThriftHive.Client(protocol)
transport.open()
print "connect success"
client.execute("SELECT * FROM some_table")
print client.fetchAll()
print "executed"
但在打印“连接成功”后,我得到以下错误。我假设连接是成功的

Traceback (most recent call last):
   File "hiveConnect.py", line 30, in <module>
      row = client.execute("SELECT * FROM some_table")
   File "/usr/lib/hive/lib/py/hive_service/ThriftHive.py", line 68, in execute
      self.recv_execute()
   File "/usr/lib/hive/lib/py/hive_service/ThriftHive.py", line 79, in recv_execute
       (fname, mtype, rseqid) = self._iprot.readMessageBegin()
   File "/usr/lib/hive/lib/py/thrift/protocol/TBinaryProtocol.py", line 137, in readMessageBegin
       name = self.trans.readAll(sz)
   File "/usr/lib/hive/lib/py/thrift/transport/TTransport.py", line 58, in readAll
        chunk = self.read(sz-have)
   File "/usr/lib/hive/lib/py/thrift/transport/TTransport.py", line 155, in read
        self.__rbuf = StringIO(self.__trans.read(max(sz, self.DEFAULT_BUFFER)))
   File "/usr/lib/hive/lib/py/thrift/transport/TSocket.py", line 94, in read
        raise TTransportException('TSocket read 0 bytes')
thrift.transport.TTransport.TTransportException: None
回溯(最近一次呼叫最后一次):
文件“hiveConnect.py”,第30行,在
row=client.execute(“从某些表中选择*)
文件“/usr/lib/hive/lib/py/hive\u service/ThriftHive.py”,第68行,执行
self.recv_execute()
recv_execute中的文件“/usr/lib/hive/lib/py/hive_service/ThriftHive.py”,第79行
(fname,mtype,rseqid)=self.\u iprot.readMessageBegin()
readMessageBegin中的第137行文件“/usr/lib/hive/lib/py/thrift/protocol/TBinaryProtocol.py”
name=self.trans.readAll(sz)
文件“/usr/lib/hive/lib/py/thrift/transport/tttransport.py”,第58行,在readAll中
chunk=self.read(sz have)
文件“/usr/lib/hive/lib/py/thrift/transport/tttransport.py”,第155行,已读
self.\uuurbuf=StringIO(self.\uuuu trans.read(max(sz,self.DEFAULT\u缓冲区)))
文件“/usr/lib/hive/lib/py/thrift/transport/TSocket.py”,第94行,已读
引发TTTransportException('TSocket读取0字节')
thrift.transport.ttTransport.ttTransportException:无

我在这个代码中做错了什么?使用服务器名称和端口连接到Hive时,我没有遇到任何错误,因此我假设那里一切正常,并且到Hive的连接不是问题。

经过进一步研究后,我发现实际使用的端口号为10000的是HiveServer2。在那之后,我必须安装pyhs2,它才能正常工作