MAPREDUCE服务 MRS-优化数据倾斜场景下的Spark SQL性能:配置场景

时间:2024-11-06 14:23:21

配置场景

在Spark SQL多表Join的场景下,会存在关联键严重倾斜的情况,导致Hash分桶后,部分桶中的数据远高于其他分桶。最终导致部分Task过重,运行很慢;其他Task过轻,运行很快。一方面,数据量大Task运行慢,使得计算性能低;另一方面,数据量少的Task在运行完成后,导致很多CPU空闲,造成CPU资源浪费。

通过如下配置项可开启自动进行数据倾斜处理功能,通过将Hash分桶后数据量很大的、且超过数据倾斜阈值的分桶拆散,变成多个task处理一个桶的数据机制,提高CPU资源利用率,提高系统性能。

未产生倾斜的数据,将采用原有方式进行分桶并运行。

使用约束:

  • 只支持两表Join的场景。
  • 不支持FULL OUTER JOIN的数据倾斜处理。

    示例:执行下面SQL语句,a表倾斜或b表倾斜都无法触发该优化。

    select aid FROM a FULL OUTER JOIN b ON aid=bid;

  • 不支持LEFT OUTER JOIN的右表倾斜处理。

    示例:执行下面SQL语句,b表倾斜无法触发该优化。

    select aid FROM a LEFT OUTER JOIN b ON aid=bid;

  • 不支持RIGHT OUTER JOIN的左表倾斜处理。

    示例:执行下面SQL语句,a表倾斜无法触发该优化。

    select aid FROM a RIGHT OUTER JOIN b ON aid=bid;

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1987.html