spark版本:3.3.3

参数

默认值

含义

开始版本

建议值

执行器

静态分配

spark.executor.instances

2

spark执行器的数量

启动任务时直接指定

100

动态分配

spark.dynamicAllocation.enabled

false

动态分配资源,如果需要动态分配改为true

1.2.0

true

spark.dynamicAllocation.minExecutors

0

最小执行器的数量

1.2.0

50

spark.dynamicAllocation.initialExecutors

0

初始执行器的数量,同spark.dynamicAllocation.minExecutors

1.3.0

50

spark.dynamicAllocation.maxExecutors

infinity

动态分配的最大执行器数量

1.2.0

1000

核数

spark.driver.cores

1

每个driver容器中cpu的核数

1.3.0

1

spark.executor.cores

1

每个执行器容器中cpu核数

1.0.0

2

内存

执行器内存

spark.executor.memory

1g

执行器堆内存大小,格式(“k”、“m”、“g” 或 “t”),例如 512m、2g

0.7.0

3g

spark.memory.fraction

0.6

堆内存中用于计算和存储的内存占比。如堆内存为10g,默认6g用于存储和计算。

1.6.0

0.6

spark.memory.storageFraction

0.5

存储内存的占比,spark.memory.fraction 预留区域大小的占比。该数值越高,可供执行使用的工作内存就越少,任务可能会更频繁地写入磁盘。建议将该值保留为默认值。

例如:spark.memory.fraction代表内存为6g,当spark.memory.storageFraction=0.5表示3个g用于存储rdd,3个g用于计算

1.6.0

0.5

spark.executor.memoryOverhead

执行器堆内存*0.1,最小384M

堆外内存,存在于jvm

2.3.0

1g

spark.memory.offHeap.enabled

false

是否启用非堆内存,存在于jvm外的容器中

1.6.0

false

spark.memory.offHeap.size

0

非堆内存大小,使用字节表示

1.6.0

1073741824 (即1g)

driver内存

spark.driver.memory

1g

driver堆内存大小,单位("k", "m", "g" or "t") 例如:512m, 2g

1.1.1

3g

spark.driver.memoryOverhead

driver堆内存*0.1,最小384M

driver进程分配的堆外内存大小,除非另有指定,否则单位为 MiB。注意:堆外内存包括offHeap(当 spark.memory.offHeap.enabled=true 时)、其他驱动进程(例如与 PySpark 驱动程序搭配运行的 Python 进程)所使用的内存,以及在同一容器中运行的其他非驱动进程所使用的内存。运行驱动程序的容器的最大内存大小由 spark.driver.memoryOverhead 与 spark.driver.memory 的总和决定。

2.3.0

1g

并行度

map并行度

spark.default.parallelism

spark core执行时的最大分区数

对 SQL 一般无效

0.5.0

100

spark.sql.files.maxPartitionBytes

128MB

spark map读数据时每个分区的最大字节数,适用于:Parquet, json和ORC,如果需要增加并行度调小该值,如果需要减小并行度调大该值。

2.0.0

128MB

spark.files.openCostInBytes

4194304 (4 MiB)

衡量「打开文件的开销」的字节数(虚拟值),用于小文件合并。作用:当多个小文件总大小 < openCostInBytes 时,会被合并到同一个分区,避免过多小分区。调优:小文件极多时,调大该值(如 16MB),减少 Map 任务数。

2.1.0

67108864(64M)

shuffle并行度

spark.sql.shuffle.partitions

200

shuffle map写数据阶段的默认分区数

1.1.0

spark.sql.adaptive.enabled

true

开启自适应查询

1.6.0

spark.sql.adaptive.advisoryPartitionSizeInBytes

67108864(64m)

shuffle reduce读数据前的AQE阶段,建议的分区大小,单位字节。降低大小会增加shuffle并行度

3.0.0

spark.sql.adaptive.coalescePartitions.enabled

true

shuffle reduce读数据前AQE阶段,自动合并小文件

3.0.0

spark.sql.adaptive.coalescePartitions.minPartitionSize

1MB

shuffle reduce读数据前AQE阶段,合并小文件后的最小分区大小

3.2.0

64MB