我有一个查询,它通过扫描90GB数据在43秒内(直接)在Athena上运行。然后,我使用pyathena运行相同的查询(我在EMR上的jupyter笔记本中使用了它),但是它并没有完成运行(并且永远不会返回任何结果)。我已经针对较小的查询(通过设置限制100)对其进行了测试,并且可以正常工作。为何pyathena比直接在Athena上运行查询要慢得多?
答案 0 :(得分:0)
我猜您正在使用fetchall api。
fetchall方法一直使用fetchone直到没有更多结果,这就是为什么要花这么长时间的原因。
std::cout
您可以使用cursor.output_location获取Athena创建的csv结果文件以读取结果(例如boto3):
def fetchall(self):
rows = []
while True:
row = self.fetchone()
if row:
rows.append(row)
else:
break
return rows
此外,在pyathena的下一版本中,您还可以使用as_pandas api从s3读取文件,将结果读取到pandas数据框。