基础配置

spark.executor.memory


指定Executor memory,也就是Executor可用内存上限


spark.memory.offHeap.enabled


堆外内存启用开关


spark.memory.offHeap.size


指定堆外内存大小


spark.memory.fraction


堆内内存中,Spark缓存RDD和计算的比例


spark.memory.storageFraction


Spark缓存RDD的内存占比,相应的执行内存比例为​​1 - spark.memory.storageFraction​


spark.local.dir


Spark指定的临时文件目录


spark.cores.max


一个Spark程序能够给申请到的CPU核数


spark.executor.cores


单个Executor的核心数


spark.task.cpus


单个task能够申请的cpu数量


spark.default.parallelism


默认并行度


spark.sql.shuffle.partitions


Shuffle过程中的Reducer数量


Shuffle配置

spark.shuffle.file.buffer


设置shuffle write任务的bufferedOutputStream的缓冲区大小。将数据写入磁盘文件之前,将其写入缓冲区,然后在将缓冲区写入磁盘后将其填充。


spark.reducer.maxSizeInFlight


该参数用于设置Shuffle read任务的buff缓冲区大小,该缓冲区决定一次可以拉取多少数据。


spark.shuffle.sort.bypassMergeThreshold


当ShuffleManager为SortShuffleManager时,如果shuffle read task的数量小于这个阈值(默认是200),则shuffle write过程中不会进行排序操作,而是直接按照未经优化的HashShuffleManager的方式去写数据,但是最后会将每个task产生的所有临时磁盘文件都合并成一个文件,并会创建单独的索引文件。


Spark SQL配置

spark.sql.adaptive.enabled


Spark AQE开启开关


spark.sql.adaptive.coalescePartitions.enabled


是否开启合并小数据分区,默认开启


spark.sql.adaptive.advisoryPartitionSizeInBytes


倾斜数据分区拆分,小数据分区合并优化时,建议的分区大小


spark.sql.adaptive.coalescePartitions.minPartitionNum


合并后最小的分区数


spark.sql.adaptive.fetchShuffleBlocksInBatch


是否批量拉取blocks,而不是一个个的去取。给同一个map任务一次性批量拉取blocks可以减少IO提高性能


spark.sql.adaptive.skewJoin.enabled


自动倾斜处理,处理sort-merge join中的倾斜数据


spark.sql.adaptive.skewJoin.skewedPartitionFactor


判断分区是否是倾斜分区的比例。



当一个 partition 的 size 大小大于该值(所有 parititon 大小的中位数)且大于spark.sql.adaptive.skewedPartitionSizeThreshold,或者 parition 的条数大于该值(所有 parititon 条数的中位数)且大于 spark.sql.adaptive.skewedPartitionRowCountThreshold,才会被当做倾斜的 partition 进行相应的处理。默认值为 10


spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes


判断是否倾斜分区的最低阈值。


《大数据成神之路》正在全面PDF化。