Pyhive+Pandas:TTransportException:TSocket 在运行查询时读取 0 个字节>1000

问题描述

我的最简单形式的代码如下所示。我正在尝试从 jupyter 笔记本连接到 hive。当我查询较少的行数时,我的代码工作正常,比如“select * from table limit 200”,但是当我执行诸如“select * from table”之类的操作时会抛出此错误,该表大约为 180MB,可以轻松加载到内存中。我不确定为什么会这样。任何帮助深表感谢!我看了其他类似的问题,但没有帮助

package versions -
    python - 3.7
    pandas - 0.24.2
    pyhive 0.6.1
import pandas
import os
from pyhive import hive
def hiveconnection(query):
    conn = hive.Connection(host=HOST,port=10000,username=USER,password=PASSWORD,auth='LDAP')
    cur = conn.cursor()
    cur.execute(query)
    result = cur.fetchall()
    conn.close()

    return result
query = """select * from table"""
df_new = hiveconnection(query)

查询运行良好,我得到了较小结果集的结果 - select * from table limit 200 但是当我查询更多行时出现以下错误

----------------------------------------------- ---------------------------- TTransportException Traceback(最近一次调用 最后)在 1 查询 = """select * from sample_table""" ----> 2 df_new = hiveconnection(query)

在 hiveconnection(query) 7 cur = conn.cursor() 8 cur.execute(查询) ----> 9 结果 = cur.fetchall() 10 conn.close() 11

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/common.py 中 获取所有(自我) 134 :py:meth:execute 未产生任何结果集或尚未发出任何调用。 第135话 --> 136 返回列表(iter(self.fetchone,None)) 137 第138话

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/common.py 中 fetchone(self) 103 104 # 睡眠直到我们完成或者我们有一些数据要返回 --> 105 self._fetch_while(lambda: not self._data and self._state != self._STATE_FINISHED) 106 107如果不是self._data:

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/common.py 中 _fetch_while(self,fn) 43 def _fetch_while(self,fn): 44 而 fn(): ---> 45 self._fetch_more() 46 如果 fn(): 47 time.sleep(self._poll_interval)

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/hive.py 中 _fetch_more(自己) 第384话 第385章 --> 386 响应 = self._connection.client.FetchResults(req) 第387话 第388话

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/TCLIService.py 在 FetchResults(self,req) 第712章 713 self.send_FetchResults(请求) --> 714 返回 self.recv_FetchResults() 715 716 def send_FetchResults(self,req):

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/TCLIService.py 在 recv_FetchResults(self) 第731话 732 结果 = FetchResults_result() --> 733 result.read(iprot) 第734章 735 如果 result.success 不是 None:

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/TCLIService.py 在 read(self,iprot) 3468 如果 ftype == TType.STRUCT: 3469 self.success = TFetchResultsResp() -> 3470 self.success.read(iprot) 3471 else: 3472 iprot.skip(ftype)

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py 在 read(self,iprot) 6581 如果 ftype == TType.STRUCT: 6582 self.results = TRowSet() -> 6583 self.results.read(iprot) 6584 else: 6585 iprot.skip(ftype)

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py 在 read(self,iprot) 2865 for _i114 中 范围(_size110):2866 _elem115 = TColumn() -> 2867 _elem115.read(iprot) 2868 self.columns.append(_elem115) 2869
iprot.readListEnd()

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py 在 read(self,iprot) 2727 如果 ftype == TType.STRUCT: 2728 self.i64Val = TI64Column() -> 2729 self.i64Val.read(iprot) 2730 else: 2731 iprot.skip(ftype)

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py 在读取(自我,iprot)2351(_etype79,_size76)= iprot.readListBegin() 2352 for _i80 in 范围(_size76): -> 2353 _elem81 = iprot.readI64() 2354 self.values.append(_elem81) 2355
iprot.readListEnd()

/usr/local/anaconda/lib/python3.7/site-packages/thrift/protocol/TBinaryProtocol.py 在 readI64(self) 220 221 def readI64(自我): --> 222 buff = self.trans.readAll(8) 第223话 224 返回值

/usr/local/anaconda/lib/python3.7/site-packages/thrift/transport/TTransport.py 在 readAll(self,sz) 60 有 = 0 61 while (有 62 块 = self.read(sz - have) 第63话 64 有 += chunkLen

/usr/local/anaconda/lib/python3.7/site-packages/thrift_sasl/init.py 在读(自我,sz) 第171话 172 --> 173 self._read_frame() 174 返回ret + self.__rbuf.read(sz - len(ret)) 175

/usr/local/anaconda/lib/python3.7/site-packages/thrift_sasl/init.py 在 _read_frame(self) 中 188 其他: 189 # 如果帧没有编码,直接通过 --> 190 解码 = self._trans.read(length) 第191话 192

/usr/local/anaconda/lib/python3.7/site-packages/thrift/transport/TSocket.py 在读(自我,sz) 141 如果 len(buff) == 0: 142 引发 TTransportException(type=TTransportException.END_OF_FILE,--> 143 message='TSocket 读取 0 字节') 144返回buff 145

TTransportException: TSocket 读取 0 个字节

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)