具有Group by的查询的Impala资源估计

时间:2015-06-08 15:34:12

标签: memory resources yarn impala

我注意到当我的查询使用带有多个字段的“分组依据”时,Impala“估计的每个主机要求”可能会增长。我想它会计算加入所需的最大资源:

EXPLAIN select field1, field2
from mytable  where field1=123
group by field1, field2
order by field1, field2
limit 100;

我想知道是否有办法减少Impala的估算值,因为真正需要的资源远低于估计的数量(300 MB)。

重要的是要说“field1”和“field2”是String。

1 个答案:

答案 0 :(得分:0)

不幸的是,很难根据查询计划时间已知的信息来估计所需的内存,这些信息基于可用的有限统计信息,尤其是在处理依赖于分组/连接exprs的选择性的聚合和连接时。 / p>

首先,您确定您有关于您正在使用的表格的最新统计数据吗?运行COMPUTE STATS [table]即可。

如果您仍然遇到此问题的正确统计信息,您可以设置set mem_limit=XM查询选项,告诉Impala查询不应使用超过X MB的内存,这样它就会从中请求大量内存骆驼而不是规划的估计。如果您确定查询的使用量不超过300MB,则可以发出set mem_limit=300M;然后发出查询。如果您在同一会话之后运行其他查询,则之后清除查询选项。