不改变内存限制,不影响查询性能。有没有办法改善 Impala 内存问题?

Without changing memory limit and without affecting query performance. Is there anyway to improve Impala memory issue?

我想知道-

  1. 不影响SQL查询性能
  2. 不降低内存限制 有什么方法可以改善 impala 内存错误问题?

我得到了一些建议,例如更改 SQL 查询中的连接语句

Impala 使用内存分析引擎,因此在每个方面都尽可能做到最小化。

  1. 过滤器 - 使用尽可能多的过滤器。如果可以,请使用子查询并在子查询内进行过滤。
  2. Joins - 内存问题的主要原因 - 您需要智能地使用连接。根据经验,在内部联接的情况下 - 首先使用驱动 table,然后是最小的 table,然后是下一个最小的 table,依此类推。对于左连接,您可以使用相同的拇指规则。因此,根据它们的大小(列和计数)移动 tables。 另外,尽可能多地使用过滤器。
  3. Operationsdistinct, regexp, IN, concat/function 在连接条件或过滤器中可以减慢速度.请确保它们是绝对必要的,您无法避免它们。
  4. select 语句中的列数,子查询 - 保持最小。
  5. select 语句中的操作,子查询 - 保持最小化。
  6. 分区 - 对它们进行优化,以便获得最佳性能。更多的分区将减慢 INSERT,而更少的分区将减慢 SELECT.
  7. 统计数据 - 创建每日计划以收集所有 table 和分区的统计数据以加快速度。
  8. 解释计划 - 在查询 运行 时获取解释计划。查询执行给你一个独特的查询 link。您将在 SQL.
  9. 的操作中看到很多见解