You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glue 4.0中Spark SQL的Union操作执行过慢,求Spark配置优化建议

Glue 4.0多Union查询性能优化的Spark配置调整

针对你遇到的Glue 3.0切换到4.0后,含多Union的长查询耗时剧增的问题,可通过以下Spark配置调整来优化:

  • 开启自适应分区合并,优化Union后的分区数量
    Glue 4.0基于Spark 3.3,默认的Union操作可能生成大量小分区,导致任务碎片化。开启自适应分区合并让Spark自动调整分区数:

    spark.sql.adaptive.enabled=true
    spark.sql.adaptive.coalescePartitions.enabled=true
    spark.sql.adaptive.coalescePartitions.minPartitionNum=64  # 根据集群核心数调整,建议为核心数的2-4倍
    spark.sql.adaptive.shuffle.targetPostShuffleInputSize=128mb  # 设置合并后每个分区的目标大小
    
  • 禁用可能导致执行计划复杂化的优化规则
    Spark 3.3新增的UnionMerge优化规则在多Union嵌套场景下可能产生低效执行计划,可临时排除该规则:

    spark.sql.optimizer.excludedRules=org.apache.spark.sql.catalyst.optimizer.UnionMerge
    

    另外,若开启了动态分区裁剪,复杂Union场景下可能额外增加开销,可尝试关闭:

    spark.sql.optimizer.dynamicPartitionPruning.enabled=false
    
  • 调整Shuffle相关参数,减少小文件合并开销
    调大Shuffle排序的旁路合并阈值,避免频繁的小文件Merge操作:

    spark.shuffle.sort.bypassMergeThreshold=1000
    
  • 配置Glue专属执行策略与分区数
    使用Glue动态执行策略适配复杂查询,并设置合理的Shuffle分区数:

    spark.glue.execution.strategy=dynamic
    spark.glue.shuffle.partitions=500  # 根据数据总量调整,避免过多或过少分区
    

额外建议:通过Glue控制台查看两个版本的执行计划差异,重点检查Union阶段的分区数量、Shuffle操作是否异常,定位具体的性能瓶颈点。

内容的提问来源于stack exchange,提问作者Abhijith Nagarjuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:33:12