2014-11-26 4 views
2

하이브가 "g"클러스터에 설치되었다고 가정하십시오. 골드 클러스터에 액세스 할 권한이 없습니다. 나는 "s"클러스터에서 파이썬 개발 작업을하고 있습니다. "s"클러스터에서 하이브에 액세스하여 쿼리를 실행할 수 있습니다.파이썬 하이브 : thrift.transport.TTransport.TTransportException : 없음

"s"클러스터에서 실행되는 Python 스크립트에서 하이브에 연결하는 코드는 다음과 같습니다.

some_table은 이미 하이브에있는 테이블입니다. 몇 가지 결과를 얻으려면 간단한 select * from some_table 명령을 실행하고 싶습니다.

"연결 성공"이 인쇄 된 후에 아래 오류가 표시됩니다. 연결이 성공했다고 가정합니다.

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 

이 코드에서 내가 뭘 잘못하고 있니? 서버 이름과 포트를 사용하여 하이브에 연결하는 동안 오류가 발생하지 않았으므로 모든 것이 잘되고 하이브 연결이 문제가 아님을 전제하고 있습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

조금 더 연구를 한 후에 실제로 포트 번호가 10,000 인 HiveServer2라는 것을 발견했습니다. 그 후 제대로 작동하려면 pyhs2를 설치해야했습니다.