教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

怎樣操作Spark SQL性能調(diào)優(yōu)?

更新時(shí)間:2021年01月14日11時(shí)08分 來(lái)源:傳智教育 瀏覽次數(shù):

  Spark SQL是Apache Spark處理結(jié)構(gòu)化數(shù)據(jù)的模塊,優(yōu)化Spark SQL性能可以實(shí)現(xiàn)跟多的Spark操作。本文就來(lái)著重介紹Spark SQL性能調(diào)優(yōu)的方法。

  Spark.HadoopRDD.ignoreEmptySplits

  參數(shù)默認(rèn)是false,如果是true,則會(huì)忽略那些空的splits,減小task的數(shù)量。

  Spark.Hadoop.mapreduce.input.fileinputformat.split.minsize

  參數(shù)用于聚合input的小文件,控制每個(gè)mapTask的輸入文件,防止小文件過(guò)多時(shí)候,產(chǎn)生太多的task.

  Spark.sql.autoBroadcastJoinThreshold && Spark.sql.broadcastTimeout

  參數(shù)用于控制在Spark SQL中使用BroadcastJoin時(shí)候表的大小閾值,適當(dāng)增大可以讓一些表走BroadcastJoin,提升性能,但是如果設(shè)置太大又會(huì)造成driver內(nèi)存壓力,而broadcastTimeout是用于控制Broadcast的Future的超時(shí)時(shí)間,默認(rèn)是300s,可根據(jù)需求進(jìn)行調(diào)整。

  Spark.sql.adaptive.enabled && Spark.sql.adaptive.shuffle.targetPostShuffleInputSize

  參數(shù)是用于開(kāi)啟Spark的自適應(yīng)執(zhí)行,這是Spark比較老版本的自適應(yīng)執(zhí)行,后面的targetPostShuffleInputSize是用于控制之后的shuffle 階段的平均輸入數(shù)據(jù)大小,防止產(chǎn)生過(guò)多的task。

  Spark.sql.parquet.mergeSchema

  參數(shù)默認(rèn)false。當(dāng)設(shè)為true,parquet會(huì)聚合所有parquet文件的schema,否則是直接讀取parquet summary文件,或者在沒(méi)有parquet summary文件時(shí)候隨機(jī)選擇一個(gè)文件的schema作為最終的schema。

  Spark.sql.files.opencostInBytes

  參數(shù)默認(rèn)4M,表示小于4M的小文件會(huì)合并到一個(gè)分區(qū)中,用于減小小文件,防止太多單個(gè)小文件占一個(gè)分區(qū)情況。

  Spark.Hadoop.mapreduce.fileoutputcommitter.algorithm.version

  參數(shù)的值為1或者2,默認(rèn)是1. MapReduce-4815 詳細(xì)介紹了 fileoutputcommitter 的原理,實(shí)踐中設(shè)置了 version=2 的比默認(rèn) version=1 的減少了70%以上的 commit 時(shí)間,但是1更健壯,能處理一些情況下




猜你喜歡:

Spark SQL是什么?有什么用?

Spark SQL快速上手

Spark SQL底層架構(gòu)詳解

傳智教育大數(shù)據(jù)培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!