为什么在雅典娜运行查询时,pyathena无法在运行时间更长的查询上使用?

时间:2018-11-12 12:48:37

标签: amazon-athena pyathena

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

1 个答案:

答案 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数据框。