Spark调优学习记录(十四)AQE

自动合并分区

spark.sql.adaptive.enabled                                # 开启aqe
spark.sql.adaptive.coalescePartitions.enabled             # 自动合并分区
spark.sql.adaptive.coalescePartitions.initialPartitionNum # 初始的分区数。默认为spark.sql.shuffle.partitions的值
spark.sql.adaptive.coalescePartitions.minPartitionNum     # 最小的分区数。默认为spark.sql.shuffle.partitions的值,parquet、orc、json文件起效
spark.sql.adaptive.advisoryPartitionSizeInBytes           # 每个分区建议大小(单位字节)
spark.sql.adaptive.shuffle.targetPostShuffleInputSize     # 同spark.sql.adaptive.advisoryPartitionSizeInBytes

动态申请资源 

尽可能更多地申请资源,所以当资源不太多时,适当减小executorAllocationRatio,控制申请maxExecutors。

spark.sql.adaptive.enabled                       # 开启aqe
spark.dynamicAllocation.enabled                  # 默认false
spark.dynamicAllocation.shuffleTracking.enabled	 # shuffle动态跟踪,默认true
spark.dynamicAllocation.initialExecutors	     # 初始化申请资源
spark.dynamicAllocation.maxExecutors	         # 最大资源
spark.dynamicAllocation.minExecutors	         # 最小资源
spark.dynamicAllocation.executorAllocationRatio	 # 提供最大并行度,默认为1

动态切换Join策略

spark.sql.adaptive.enabled                      # 开启aqe
spark.sql.adaptive.localShuffleReader.enabled	# sortJoin转hashJoin

动态调整数据倾斜

spark.sql.adaptive.enabled                                  # 开启aqe
spark.sql.adaptive.skewJoin.enabled                         # 开启倾斜join检测
spark.sql.adaptive.skewJoin.skewedPartitionFactor           # 默认5,当某个分区大小大于中位数5倍,才打散数据
spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes # 默认256M,且要数据要大于这个值,才会打散
spark.sql.adaptive.advisoryPartitionSizeInBytes             # 告诉spark拆分后分区数据大小

当合并和倾斜同时使用时,会先合并,再调整倾斜。

动态分区裁剪DPP

spark.sql.optimizer.dynamicPartitionPruning.enabled 

# join条件中要有分区字段
# 另一张表 至少存在一个过滤条件
# join必须是inner join、left join、right join

优化前

优化后

Hint增强

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值