Полагаю, вы используете API fetchall.
Метод fetchall использует fetchone до тех пор, пока больше не будет результатов, и поэтому он занимает так много времени.
def fetchall(self):
rows = []
while True:
row = self.fetchone()
if row:
rows.append(row)
else:
break
return rows
Вы можете использовать cursor.output_location, чтобы получить файл результатов csv, который Athena создает для чтения результатов (например, с помощью boto3):
bucket, key = cursor.output_location.strip('s3://').split('/', 1)
session = boto3.session.Session(aws_access_key_id=YOUR_AWS_KEY, aws_secret_access_key=YOUR_AWS_SECRET, region_name=YOUR_REGION_NAME)
result = session.resource('s3').Object(bucket, key)
Кроме того, в следующих версиях pyathena вы сможете читать результаты в pandas dataframe, используя as_pandas api, который читает файл из s3.