Memory 使用Group by查询的Impala资源估计

Memory 使用Group by查询的Impala资源估计,memory,resources,yarn,impala,Memory,Resources,Yarn,Impala,我注意到,当我的查询使用带有多个字段的“分组依据”时,Impala“估计每主机需求”可能会增长。我想它会计算连接所需的最大资源: EXPLAIN select field1, field2 from mytable where field1=123 group by field1, field2 order by field1, field2 limit 100; 我想知道是否有办法减少黑斑羚的估计值,因为实际需要的资源远低于估计值(300GB) 很重要的一点是,“field1”和“fiel

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

EXPLAIN select field1, field2
from mytable  where field1=123
group by field1, field2
order by field1, field2
limit 100;
我想知道是否有办法减少黑斑羚的估计值,因为实际需要的资源远低于估计值(300GB)


很重要的一点是,“field1”和“field2”是字符串。

不幸的是,根据查询计划时已知的信息(基于可用的有限统计数据),很难估计所需的内存,特别是在处理依赖于分组/连接表达式的选择性的聚合和连接时

首先,您确定您使用的表中有最新的统计信息吗?运行
computestats[table]
执行此操作


如果正确的统计数据仍然存在此问题,则可以设置
set mem_limit=XM
query选项,告诉Impala查询不应使用超过X MB的内存,因此它将从Llama请求该内存量,而不是从计划中估计。如果确定查询使用的内存不超过300MB,可以发出
set mem\u limit=300M然后发出查询。如果您在同一会话中运行其他查询,请在之后清除查询选项。

您是否将黑斑羚与羊驼和纱线一起使用,问题是黑斑羚最终请求300GB?是的,我已经测试了有无羊驼和纱线。在这两种情况下,与实际使用的内存相比,估计的内存非常大。说“field1”和“field2”是字符串很重要。是的,我已经用“computestats”更新了统计数据。我将尝试在这个特定查询中使用mem_limit。当我使用另一个查询时,正如您所说,我将在以后清除该选项。非常感谢。