【发布时间】:2019-04-15 15:08:03
【问题描述】:
我正在通过 Python 应用程序向 Athena 发起多个并发查询。
鉴于 Athena 的查询历史,似乎 Athena 确实同时接收到多个查询,并同时处理。
但是,事实证明,总体查询运行时间与一个接一个地发送查询并没有太大区别。
示例:顺序发送三个查询与同时发送:
# sequentially
received at took finished at
query_1 22:01:14 6s 22:01:20
query_2 22:01:20 6s 22:01:27
query_3 22:01:27 5s 22:01:25
# concurrently
received at took finished at
query_1 22:02:25 17s 22:02:42
query_2 22:02:25 17s 22:02:42
query_3 22:02:25 17s 22:02:42
根据这些结果,在第二种情况下,似乎 Athena 虽然假装同时处理查询,但以顺序方式有效地处理它们。
是否有一些我不知道的配置,以使 Athena 有效地同时处理多个查询?理想情况下,在本例中,三个查询并发处理的全局运行时间为 6 秒(三个单独查询中最长的时间)。
注意:这是三个针对同一个数据库/表的查询,由 S3 中的同一个(单个)Parquet 文件支持。这个 Parquet 文件大约是。 70Mb 大,250 万行,六列。
【问题讨论】:
-
Athena 将同时运行查询,您看到的数字不太可能是 Athena 造成的。要弄清楚它是什么,你必须给我们更多的上下文,例如你用来产生测量的代码。您如何等待查询完成?
-
@Theo 感谢您的评论 — 这些数字直接来自 Athena 的查询历史记录,而不是来自我的系统。
-
向我们展示启动查询的代码以及从查询历史记录中提取数字的代码。当我们谈论 17 秒运行时,三个查询看起来不太可能具有确切的开始和结束持续时间。我们运行了数百个并发查询,但没有看到这种行为。