【问题标题】:Impala Resource Estimation for queries with Group by使用 Group by 查询的 Impala 资源估计
【发布时间】:2015-06-09 14:45:09
【问题描述】:

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

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

我想知道是否有办法降低 Impala 的估计值,因为实际需要的资源 (300 MB) 远低于估计的数量 (300 GB)。

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

【问题讨论】:

  • 您是否将 Impala 与 Llama 和 Yarn 一起使用,问题是 Impala 最终请求 300GB?
  • 是的,我在有和没有 Llama 和 Yarn 的情况下都对其进行了测试。在这两种情况下,与实际使用的内存相比,估计的内存都非常大。重要的是说“field1”和“field2”是String。

标签: memory resources hadoop-yarn impala


【解决方案1】:

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

首先,您确定您使用的表有最新的统计信息吗?运行COMPUTE STATS [table] 这样做。

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

【讨论】:

  • 是的,我已经用“compute stats”更新了统计数据。我将尝试在这个特定查询中使用 mem_limit。正如你所说,当我使用另一个查询时,我会在之后清除该选项。谢谢。
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多