功能介绍
SQL AI 调优通过智能算法和机器学习技术,优化查询性能提升数据处理效率。面通过对 SQL 的全域数据如查询计划、数据分布和资源使用的全面分析提供调优策略。同时结合 SQL 查询的洞察信息提供优化建议,如索引创建、数据倾斜处理等。此外,AI 调优支持实时监控和反馈,帮助用户快速定位问题并给出处理意见,通过高效的异常发现和有效的调优方案进一步保障大数据任务的稳定性和可靠性。
注意:
1. 当前仅覆盖 Spark 引擎的 SQL 调优。
2. SQL AI 调优功能为白名单功能。
操作步骤
1. 登录 EMR 智能管家 > 异常中心 ,在控制台左侧菜单中选中智能管家 > 异常中心,单击进入计算洞察> Spark总览页面。
2. Spark 总览 > 任务排行榜列表操作 > 洞察建议可以查看 SQL 的 AI 优化建议。
功能说明
SQL AI 的调优分为命中项调优和非命中项调优,其中命中项为按照查询洞察项(具体见洞察项列表)的异常项提供的精准 SQL 调优建议,非命中项为通用的 AI 大模型提供的非针对性优化建议,以上两种建议均建议用户按照实际应用场景进行验证后按需采纳。
说明:
1. 命中项调优: SQL 调优系统采用通用型AI模型,可覆盖部分洞察项异常场景提供优化建议,精准性较高可调优验证后应用。
2. 非命中调优:支持覆盖 SQL、Schema、Profile、DAG、Counters 等多维度数据的AI优化,但建议的有效性仅为25%,建议用户在实际应用中结合业务背景进行充分验证后按需采纳。
命中项列表说明:
计算引擎 | 命中洞察项 | 说明 | 价值属性 |
Spark | 分区条件不合理 | 分区字段选择不当(如:高频字段或数据分布不均),导致查询时数据倾斜或全表扫描 | 性能优化 |
| BroadcastJoin 优化 | 识别 BroadcastJoin 的不合理使用(如:阈值设置不当),导致小表与大表进行 Shuffle Join,引发大量网络传输和计算开销,显著降低查询性能 | 性能优化 资源效率提升 |
| CPU 资源浪费 | 因任务并行度设置不合理(如:分区数过多或过少)、数据倾斜、或计算逻辑冗余,导致CPU 资源未被充分利用或过度消耗,造成资源浪费。 | 性能优化 资源效率提升 节约成本 |
| JOIN 数据膨胀 | 不合理的 JOIN 操作可能导致数据膨胀,具体表现为:数据倾斜、笛卡尔积、大表 JOIN 大表等。 | 性能优化 资源效率提升 节约成本 |
| 数据倾斜 | 数据倾斜(数据分布不均匀)导致某些分区或任务处理的数据量远大于其他分区或任务,具体场景:JOIN 键倾斜、GROUP BY 键倾斜、输入数据倾斜、Shuffle 数据倾斜 | 性能优化 资源效率提升 节约成本 |
| Task 输入为空 | 查询任务中某些 Task 的输入数据为空 | 性能优化 资源效率提升 节约成本 |
| ExecutorGC | Executor 频繁触发垃圾回收(GC) | 性能优化 资源效率提升 稳定性增强 |
| 全表扫描分区表 | 查询存在未利用分区表的分区剪枝(Partition Pruning)特性,导致全表扫描 | 性能优化 资源效率提升 节约成本 |
| 全局排序 | 查询中包含全局排序(如 ORDER BY),存在: 1. 数据Shuffle量过大,增加网络和磁盘I/O压力。 2. 单点排序任务负载过重,引发性能瓶颈。 | 性能优化 资源效率提升 节约成本 |
| 运行历史分析 | 通过分析查询的运行历史,发现时间波动较大或部分 Stage 或 Task 耗时过长等情况。 | 性能优化 稳定性增强 资源效率提升 |
| 输入小文件过多 | 查询的输入数据包含大量小文件,存在任务调度开销过大、元数据管理压力增加、数据读取效率低等情况。 | 性能优化 资源效率提升 节约成本 |
| 资源不足 | 集群资源(CPU、内存、磁盘等)不足以支持查询需求,导致任务执行缓慢或失败。 | 性能优化 稳定性增强 |
| 扫描大量数据 | 可能因未使用分区剪枝或索引、数据过滤条件不充分等导致查询扫描的数据量过大。 | 性能优化 节约成本 |
| 峰值内存超限 | 查询执行过程中内存使用量超过限制,导致 OOM(内存溢出)或任务失败。 | 性能优化 稳定性增强 |
| Memory 资源浪费 | 因缓存数据未被有效使用、内存分配不合理,部分 Executor 内存限制等导致内存资源未充分利用。 | 资源效率提升 节约成本 |
| 输出小文件过多 | 因存储效率低,NameNode 负载过高、后续读取性能下降等导致查询结果输出大量小文件。 | 性能优化 节约成本 |
| Resource 开销异常 | 因数据倾斜或计算逻辑复杂、资源配置不合理等引起查询的资源开销(CPU、内存、磁盘等)异常高。 | 性能优化 节约成本 |
| 调度延迟 | 因集群资源不足或竞争激烈、调度器负载过高等情况引起任务调度延迟。 | 性能优化 稳定性增强 |
| 调度倾斜 | 因数据分布不均匀、调度策略不合理引起任务调度不均匀,部分节点负载过重。 | 性能优化 资源效率提升 |
| ShuffleFailure | 数据量过大致网络或磁盘 I/O 超限、内存不足至 oom 导致等情况引起的 Shuffle 阶段失败。 | 性能优化 稳定性增强 |
| 慢Task | 数据倾斜或计算逻辑复杂、资源分配不足等导致某些Task执行时间过长。 | 性能优化 资源效率提升 |
| 输入小文件过多 | 查询的输入数据包含大量小文件,比如如下场景: 1. 任务调度开销过大。 2. 数据读取效率低。 | 性能优化 节约成本 |
| Task输入数据过小 | 某些Task的输入数据量过小,引起原因如下: 1. 任务调度开销占比过高。 2. 资源利用率低。 | 性能优化 资源效率提升 |
| StageScheduleDelay | 因前序 Stage未完成、集群资源不足或竞争激烈等情况引起 Stage 调度延迟。 | 性能优化 稳定性增强 |