Spark AQE与倾斜连接配置未生效,数据倾斜问题求助
Spark Join与窗口函数的数据倾斜问题
问题详情
在Spark的Join和窗口函数操作中遇到了数据倾斜问题,已尝试Spark官方推荐的多项性能调优配置,且在Spark历史服务器的Environment标签中确认以下配置已生效:
.config("spark.sql.shuffle.partitions", 16000) \ .config("spark.executor.instances", 200) \ .config("spark.executor.memory", "60g") \ .config("spark.executor.cores", 5) \ .config("spark.sql.adaptive.enabled", "true") \ .config("spark.sql.adaptive.skewJoin.enabled", "true") \ .config("spark.sql.adaptive.coalescePartitions.enabled", "true") \ .config("spark.sql.adaptive.advisoryPartitionSizeInBytes","512m") \ .config("spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes","1024m") \ .config("spark.sql.adaptive.skewJoin.skewedPartitionFactor", 2) \ .config("spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled", "true") \
同时还尝试了spark.sql.adaptive.forceOptimizeSkewedJoin配置,但数据倾斜问题仍未解决。
观察发现,所有存在倾斜的阶段中,有一个任务的读写数据量是次大任务的25倍,该任务出现了内存和磁盘溢出。按照当前配置的倾斜分区因子和阈值,这个分区应该被自动拆分,但实际并未触发拆分逻辑。
出现倾斜的阶段包括:
- stage 66(SortMergeJoin)
- stage 67(SortMergeJoin)
- stage 81(Window)
注:每个倾斜阶段中仅单个任务出现溢出,例如stage 66的任务运行情况。
内容的提问来源于stack exchange,提问作者ifightfortheuserz
相关产品推荐
相关产品推荐

