一、功能介绍
注意: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 调度延迟。 | 性能优化稳定性增强 |