更新时间:2022-09-29 GMT+08:00
配置AE参数解决数据倾斜
场景概述
如果观察到SQL执行时间较长,可进入SparkUI查看对应SQL的执行状态。
如果观察到一个stage运行时间超过20分钟且只剩余一个task在运行,即为数据倾斜的情况。
图1 数据倾斜样例
操作步骤
- 登录数据湖探索管理控制台,选择“SQL作业”,在要修改的作业所在行的“操作”列,单击“编辑”进入SQL编辑器界面。
- 在SQL编辑器界面,单击“设置”,在“配置项”尝试添加以下几个Spark参数进行解决。
参数项如下,冒号前是配置项,冒号后是配置项的值。
spark.sql.enableToString:false spark.sql.adaptive.join.enabled:true spark.sql.adaptive.enabled:true spark.sql.adaptive.skewedJoin.enabled:true spark.sql.adaptive.enableToString:false spark.sql.adaptive.skewedPartitionMaxSplits:10
spark.sql.adaptive.skewedPartitionMaxSplits表示倾斜拆分力度,可不加,默认为5,最大为10。
- 单击“执行”重新运行作业,查看优化效果。
父主题: 运维指导
运维指导 所有常见问题
- SQL作业运行慢如何定位
- 查看DLI SQL日志
- 查看DLI的执行SQL记录
- 配置AE参数解决数据倾斜
- DLI控制台中无法查询到对应表
- OBS表压缩率较高
- 如何避免字符码不一致导致的乱码
- 删除表后再重新创建同名的表,需要对操作该表的用户和项目重新赋权
- DLI分区内表导入的文件不包含分区列的数据,导致数据导入完成后查询表数据失败
- 创建OBS外表,因为OBS文件中的某字段存在回车换行符导致表字段数据错误
- SQL作业中存在join操作,因为自动广播导致内存不足,作业一直运行中
- join表时没有添加on条件,造成笛卡尔积查询,导致队列资源爆满,作业运行失败
- 手动在OBS表的分区目录下添加了数据,但是无法查询到该部分数据
- 为什么insert overwrite覆盖分区表数据的时候,覆盖了全量数据?
- 为什么SQL作业一直处于“提交中”?
- 跨源连接RDS表中create_date字段类型是datetime,为什么dli中查出来的是时间戳呢?
- SQL作业执行完成后,修改表名导致datasize修改失败怎么办?
- 从DLI导入数据到OBS,为什么数据量出现差异?
more