基础配置
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化。