Spark3.0核心調(diào)優(yōu)參數(shù)小總結(jié)

本文已經(jīng)加入「大數(shù)據(jù)成神之路PDF版」中提供下載。
你可以關(guān)注公眾號(hào),后臺(tái)回復(fù):「PDF」?即可獲取。
Spark重點(diǎn)難點(diǎn)系列:
《【Spark重點(diǎn)難點(diǎn)01】你從未深入理解的RDD和關(guān)鍵角色》 《【Spark重點(diǎn)難點(diǎn)02】你以為的Shuffle和真正的Shuffle》 《【Spark重點(diǎn)難點(diǎn)03】你的數(shù)據(jù)存在哪了?》 《【Spark重點(diǎn)難點(diǎn)04】你的代碼跑起來誰說了算?(內(nèi)存管理)》 《【Spark重點(diǎn)難點(diǎn)05】SparkSQL YYDS(上)!》 《【Spark重點(diǎn)難點(diǎn)06】SparkSQL YYDS(中)!》 《【Spark重點(diǎn)難點(diǎn)07】SparkSQL YYDS(加餐)!》 《【Spark重點(diǎn)難點(diǎn)08】Spark3.0中的AQE和DPP小總結(jié)》
基礎(chǔ)配置
spark.executor.memory
指定Executor memory,也就是Executor可用內(nèi)存上限
spark.memory.offHeap.enabled
堆外內(nèi)存啟用開關(guān)
spark.memory.offHeap.size
指定堆外內(nèi)存大小
spark.memory.fraction
堆內(nèi)內(nèi)存中,Spark緩存RDD和計(jì)算的比例
spark.memory.storageFraction
Spark緩存RDD的內(nèi)存占比,相應(yīng)的執(zhí)行內(nèi)存比例為
1 - spark.memory.storageFraction
spark.local.dir
Spark指定的臨時(shí)文件目錄
spark.cores.max
一個(gè)Spark程序能夠給申請(qǐng)到的CPU核數(shù)
spark.executor.cores
單個(gè)Executor的核心數(shù)
spark.task.cpus
單個(gè)task能夠申請(qǐng)的cpu數(shù)量
spark.default.parallelism
默認(rèn)并行度
spark.sql.shuffle.partitions
Shuffle過程中的Reducer數(shù)量
Shuffle配置
spark.shuffle.file.buffer
設(shè)置shuffle write任務(wù)的bufferedOutputStream的緩沖區(qū)大小。將數(shù)據(jù)寫入磁盤文件之前,將其寫入緩沖區(qū),然后在將緩沖區(qū)寫入磁盤后將其填充。
spark.reducer.maxSizeInFlight
該參數(shù)用于設(shè)置Shuffle read任務(wù)的buff緩沖區(qū)大小,該緩沖區(qū)決定一次可以拉取多少數(shù)據(jù)。
spark.shuffle.sort.bypassMergeThreshold
當(dāng)ShuffleManager為SortShuffleManager時(shí),如果shuffle read task的數(shù)量小于這個(gè)閾值(默認(rèn)是200),則shuffle write過程中不會(huì)進(jìn)行排序操作,而是直接按照未經(jīng)優(yōu)化的HashShuffleManager的方式去寫數(shù)據(jù),但是最后會(huì)將每個(gè)task產(chǎn)生的所有臨時(shí)磁盤文件都合并成一個(gè)文件,并會(huì)創(chuàng)建單獨(dú)的索引文件。
Spark SQL配置
spark.sql.adaptive.enabled
Spark AQE開啟開關(guān)
spark.sql.adaptive.coalescePartitions.enabled
是否開啟合并小數(shù)據(jù)分區(qū),默認(rèn)開啟
spark.sql.adaptive.advisoryPartitionSizeInBytes
傾斜數(shù)據(jù)分區(qū)拆分,小數(shù)據(jù)分區(qū)合并優(yōu)化時(shí),建議的分區(qū)大小
spark.sql.adaptive.coalescePartitions.minPartitionNum
合并后最小的分區(qū)數(shù)
spark.sql.adaptive.fetchShuffleBlocksInBatch
是否批量拉取blocks,而不是一個(gè)個(gè)的去取。給同一個(gè)map任務(wù)一次性批量拉取blocks可以減少IO提高性能
spark.sql.adaptive.skewJoin.enabled
自動(dòng)傾斜處理,處理sort-merge join中的傾斜數(shù)據(jù)
spark.sql.adaptive.skewJoin.skewedPartitionFactor
判斷分區(qū)是否是傾斜分區(qū)的比例。
當(dāng)一個(gè) partition 的 size 大小大于該值(所有 parititon 大小的中位數(shù))且大于spark.sql.adaptive.skewedPartitionSizeThreshold,或者 parition 的條數(shù)大于該值(所有 parititon 條數(shù)的中位數(shù))且大于 spark.sql.adaptive.skewedPartitionRowCountThreshold,才會(huì)被當(dāng)做傾斜的 partition 進(jìn)行相應(yīng)的處理。默認(rèn)值為 10
spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes
判斷是否傾斜分區(qū)的最低閾值。
「PDF」就可以看到阿里云盤下載鏈接了!



Hi,我是王知無,一個(gè)大數(shù)據(jù)領(lǐng)域的原創(chuàng)作者。? 放心關(guān)注我,獲取更多行業(yè)的一手消息。

