проблема с соединением pyhive после выполнения запроса, который занимает слишком много времени - PullRequest
0 голосов
/ 06 февраля 2019

Я использую функцию pandas.read_sql с соединением улья для извлечения действительно больших данных.У меня есть такой скрипт:

df = pd.read_sql(query_big, hive_connection)
df2 = pd.read_sql(query_simple, hive_connection)

Большой запрос занимает много времени, и после его выполнения python возвращает следующую ошибку при попытке выполнить вторую строку: raise NotSupportedError("Hive does not have transactions") # pragma: no cover Кажется, что естьчто-то не так с соединением.

Более того, если я заменим вторую строку на multirpocessing.Manager (). Queue (), он выдаст следующую ошибку:

File "/usr/lib64/python3.6/multiprocessing/managers.py", line 662, in temp
token, exp = self._create(typeid, *args, **kwds)
File "/usr/lib64/python3.6/multiprocessing/managers.py", line 554, in _create
conn = self._Client(self._address, authkey=self._authkey)
File "/usr/lib64/python3.6/multiprocessing/connection.py", line 493, in Client
answer_challenge(c, authkey)
File "/usr/lib64/python3.6/multiprocessing/connection.py", line 732, in answer_challenge
message = connection.recv_bytes(256) # reject large message
File "/usr/lib64/python3.6/multiprocessing/connection.py", line 216, in recv_bytes
buf = self._recv_bytes(maxlength)
File "/usr/lib64/python3.6/multiprocessing/connection.py", line 407, in _recv_bytes
buf = self._recv(4)
File "/usr/lib64/python3.6/multiprocessing/connection.py", line 383, in _recv
raise EOFError
EOFError

Кажется, такого родаошибки связаны с ошибкой функции выхода в файле connection.py.Более того, когда я изменил запрос в первой команде, чтобы извлечь меньшие данные, которые не занимают много времени, все работало нормально.Поэтому я предполагаю, что это может быть связано с тем, что выполнение первого запроса занимает слишком много времени, что-то неправильно завершено.Это привело к двум ошибкам, которые по своей природе так различны, но оба связаны с проблемами разрыва соединения.

...