gpt4 book ai didi

amazon-athena - 为什么 pyathena 不能处理运行时间较长的查询,而 Athena 运行它们?

转载 作者:行者123 更新时间:2023-12-03 01:38:37 26 4
gpt4 key购买 nike

我有一个查询,通过扫描 90GB 数据,在 43 秒内(直接)在 Athena 上运行。然后,我使用 pyathena 运行相同的查询(我在 EMR 上的 jupyter 笔记本中使用它),但它只是没有完成运行(并且从不返回任何结果)。我已经针对较小的查询对其进行了测试(通过设置限制 100)并且它有效。 pyathena 比直接在 Athena 上运行查询慢得多的原因是什么?

最佳答案

我猜您正在使用 fetchall api。

fetchall 方法正在使用 fetchone 直到没有更多结果,这就是为什么它需要这么长时间。

def fetchall(self):
rows = []
while True:
row = self.fetchone()
if row:
rows.append(row)
else:
break
return rows

您可以使用cursor.output_location获取Athena创建的csv结果文件来读取结果(例如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 的下一个版本中,您将能够使用 as_pandas api 从 s3 读取文件,将结果读取到 pandas 数据帧。

关于amazon-athena - 为什么 pyathena 不能处理运行时间较长的查询,而 Athena 运行它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53262533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com