spark调优参数

硬件类

CPU

spark.cores.max 集群范围内满配CPU核数
spark.executor.cores 单个Executor内CPU核数
spark.task.cpus 单个任务消耗的CPU核数
spark.default.parallelism 未指定分区数时的默认并行度,在没有明确分区规则时起作用
spark.sql.shuffle.partitions 数据关联、聚合操作中Reducer的并行度,默认是200

内存

spark.executor.memory 单个Executor内堆内内存总大小
spark.memory.offHeap.enabled 是否启用堆外内存,默认为False
spark.memory.offHeap.size 单个Executor内堆外内存总大小
spark.memory.fraction 堆内内存中,用于缓存RDD和执行计算的内存比例(即userMemory之外的内存)
spark.memory.storageFraction 用于缓存RDD的内存占比,执行内存占比为
spark.rdd.compress RDD 缓存是否压缩,默认不压缩

磁盘

spark.local.dir 用于缓存RDD和Shuffle中间文件的磁盘目录

硬件资源类

CPU

spark.cores.max 集群范围内满配CPU核数
spark.executor.cores 单个Executor内CPU核数
spark.task.cpus 单个任务消耗的CPU核数
spark.default.parallelism 未指定分区数时的默认并行度
spark.sql.shuffle.partitions 数据关联、聚合操作中Reducer的并行度

内存

spark.executor.memory 单个Executor内堆内内存总大小
spark.memory.offHeap.enabled 是否启用堆外内存,默认为False
spark.memory.offHeap.size 单个Executor内堆外内存总大小
spark.memory .fraction 堆内内存中,用于缓存RDD和执行计算的内存比例
spark.memory.storageFraction 用于缓存RDD的内存占比,执行内存占比为1 - 
spark.memory.storageFraction
spark.rdd.compress RDD缓存是否压缩,默认不压缩

磁盘

spark.local.dir 用于缓存RDD和Shuffle中间文件的磁盘目录

Shuffle 类

 spark.shuffle.file.buffer Map  输出端的写入缓冲区大小,缓存越大落盘次数越小

spark.reducer.maxSizelnFlight Reduce输入端的读取缓冲区大小,缓存越大网络传输次数越小

spark.sql.autoBroadcastJoinThreshold  广播阈值

Spark SQL

spark.shuffle.sort.bypassMergeThreshold    Map阶段不进行排序的分区阈值

AQE

spark.sql.adaptive.enabled        是否启用AQE (Adaptive query execution),默认禁用

AQE分区合并

  • 分区合并阈值计算公式:min(指定尺寸,数据集大小/指定最小分区数)
spark.sql.adaptive.coalescePartitions.enabled         是否启用AQE中的自动分区合并,默认启用
spark.sql.adaptive.advisoryPartitionSizelnBytes        由开发者指定分区合并后的推荐尺寸
spark.sql.adaptive.coalescePartitions.minPartitionNum      分区合并后,数据集的分区数不能低于该值

AQE数据倾斜

  • 是否数据倾斜:分片大小 > 中位数*放大因子 && 分片大小 > 倾斜阈值
spark.sql.adaptive.skewJoin.enabled 是否开启AQE中自动处理数据倾斜的功能,默认开启 spark.sql.adaptive.skewJoin.skewedPartitionFactor 判定数据分区是否倾斜的比例系数
spark.sql.adaptive.skewJoin.skewedPartitionThresholdlnBytes 判定数据分区是否倾斜的最低阈值
spark.sql.adaptive.advisoryPartitionSizelnBytes 以字节为单位,拆分倾斜分区的数据粒度

AQE Join策略

  • 动态判断是否可以降级为brodcast join
  • 过滤之后的非空分区数要小于指定比例
spark.sql.autoBroadcastJoinThreshold 数据表采用Broadcast Join实现方式的最低阈值
spark.sql.adaptive.nonEmptyPartitionRatioForBroadcastJoin 非空分区比例小于该值,才会调整Join策略

查看数据集大小的方法

val df: DataFrame = _
df.cache.count
val plan = df.queryExecution.logical
val estimated: BigInt = spark
.sessionState
.executePlan(plan)
.optimizedPlan
.stats
.sizeInBytes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值