问题描述
我的最简单形式的代码如下所示。我正在尝试从 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 (将#修改为@)