Spark 配置速查
Spark CPU 相关配置
CPU 个数配置
- spark.cores.max: 从集群粒度配置 CPU 个数;
- spark.executor.cores: 从 Executor 粒度配置 CPU 个数;
- spark.task.cpus: 从计算任务配置 CPU 个数;
并行度配置
- spark.default.parallelism: 对于没有明确分区规则的 RDD 设置 Spark 任务的默认并行度;
- spark.sql.shuffle.partitions: 明确指定数据关联或聚合操作中 Reduce 端的分区数量;
Spark 内存相关配置
堆外内存
- spark.memory.offHeap.enabled: 是否开启堆外内存(true/false)
- spark.memory.offHeap.size: 堆外内存大小
堆内内存
- spark.memory.fraction: 堆内内存中,用于缓存 RDD 和执行计算的内存比例,这个值在 Spark 2.0+ 为 60%,Spark 1.6 为 75%;
- spark.memory.storageFraction: 配置 Storage Memory 的比例,用于缓存 RDD 数据;
- spark.rdd.compress: RDD 缓存是否压缩,默认不压缩;
Spark 磁盘相关配置
- spark.local.dir: 允许开发者设置磁盘目录,用于存储 RDD Cache 数据落盘和 Shuffle 中间文件;
Spark Shuffle 相关配置
- spark.shuffle.file.buffer: Map 写入端缓冲区的大小;
- spark.reducer.maxSizeInFlight: Reduce 输入端的读取缓冲区大小;
- spark.shuffle.sort.bypassMergeThreshold: Map 阶段不进行排序的分区阈值;
Spark SQL 相关配置
注:这里使用的 Spark 3.0 中的配置,但我自己使用的是 Spark 2.4 版本,这里的配置是根据网上博客进行摘录的;相关的配置详细信息可以查看官网:Spark 配置官网
- spark.sql.adaptive.enabled: 用于开启 Spark AQE,默认是关闭的(version 1.6.0);
- spark.sql.adaptive.advisoryPartitionSizeInBytes: 由开发者指定分区合并尺寸(version 3.0.0);
- spark.sql.adaptive.coalescePartitions.minPartitionNum: 在合并分区后,新的分区数不能小于这个值;
Spark 数据倾斜相关配置
- spark.sql.adaptive.skewJoin.enabled: 是否开启 AQE 自动处理数据倾斜功能,默认开启(version 3.0.0);
- spark.sql.adaptive.skewJoin.skewedPartitionFactor: 数据倾斜比例系数(version 3.0.0);
- spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes: 判定数据倾斜的最低阈值(version 3.0.0);
- spark.sql.adaptive.advisoryPartitionSizeInBytes: 以字节为单位,拆分倾斜分区的数据粒度(version 3.0.0);
Spark Sql Join 相关配置
- spark.sql.autoBroadcastJoinThreshold: 采用 Broadcast Join 的最低阈值,也就是说,Join 的两个表中有一个小于这个阈值,就会变成 Broadcast Join(version 1.0.0);
- spark.sql.adaptive.nonEmptyPartitionRatioForBroadcastJoin: 触发 Broadcast Join 的分区比例阈值,因为这个配置需要与 Spark 3.x 中的 AQE 配合使用,所以在低版本中不存在该配置;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Tianyi's Blog!
评论