AWS Athena 在此比例因子下超时/资源不足
Posted
技术标签:
【中文标题】AWS Athena 在此比例因子下超时/资源不足【英文标题】:AWS Athena Timing out / not enough resources at this scale factor 【发布时间】:2022-01-03 02:53:47 【问题描述】:当我尝试将两个表连接在一起并订购时,我遇到了 athena 的问题。我的查询语句看起来与此非常相似:
SELECT *
from Table_1
LEFT JOIN Table_2 ON Table_1
where Table_1.id = Table_2.id AND Table_1.date = Table_2.date
ORDER BY Table_1.id, Table_1.date
我的表格可能很大,具体取决于我正在使用的数据集,大约有一百万行或更多。在做了一些研究之后,我意识到 ORDER BY 可能会减慢我的查询速度,但即使我把它拿出来,它仍然会超时。同时,我需要 ORDER BY 来构建我的数据,因为我会将其转换为 csv 文件。我还读到我可以拆分查询以使用不同的工作人员并利用 Athena 进行并行工作的能力,但我不知道如何在 Athena 中执行此操作,所以如果有人可以详细说明和解释怎么可能做到这一点,那将是完美的。我想做的另一件事是根据列对数据进行分区,但是如果有人可以向我解释这样做的好处,我会很高兴,因为我不会只选择表的一部分,而是选择整个表每次。
我不知道这是否相关,但我的文件大小通常约为 100mb 或更少。但是,从我在这里看到的具有相同问题的不同帖子中,它们处理的容量超过 10gb,所以我不确定我对 Athena 的使用是否存在根本问题。
编辑:我正在考虑对我的查询进行分页以查看是否可以解决我的问题,例如在循环中使用偏移量和限制并将数据附加在一起。这会是一个可行的解决方案吗?
【问题讨论】:
两个表中是否有TEXT
列?你能为每个人提供SHOW CREATE TABLE
吗?我们必须知道你有什么索引。
每个表的id
是PRIMARY KEY
吗?如果是这样,为什么还要过滤date
?
“看起来非常相似”——如果不够相似,那么我们给出的任何建议都会受到质疑。
OFFSET
是一种非常低效的分页方式。相反,“记住你离开的地方”。
PARTITIONing
很少提供性能。
【参考方案1】:
在对我的代码进行了更多测试以查看它在负载大小方面的中断点后,我意识到我的总行数比应有的要多得多。我发现我的选择语句并不是我在帖子中描述的那样。由于查询构造中的错误(因为我有条件地创建它),它缺少AND Table_1.date = Table_2.date
部分。正如我所注意到的,这导致行数增加了多达 10 倍,这就是我的查询搞砸并耗尽所有 athena 资源的原因。所以现在一切正常。不过,我会留下这篇文章,主要是为了学习目的,看看是否有任何关于这个潜在问题的问题得到解答。
【讨论】:
以上是关于AWS Athena 在此比例因子下超时/资源不足的主要内容,如果未能解决你的问题,请参考以下文章
ImageView setScaleX / Y,比例因子<1