SparkSQL 性能調優參數

1,spark.hadoopRDD.ignoreEmptySplits

默認是false,如果是true,則會忽略那些空的splits,減小task的數量。

2,spark.hadoop.mapreduce.input.fileinputformat.split.minsize

是用於聚合input的小文件,用於控制每個mapTask的輸入文件,防止小文件過多時候,產生太多的task。

3,spark.sql.autoBroadcastJoinThreshold && spark.sql.broadcastTimeout

用於控制在 spark sql 中使用 BroadcastJoin 時候表的大小閾值,適當增大可以讓一些表走 BroadcastJoin,提升性能,但是如果設置太大又會造成 driver 內存壓力,而 broadcastTimeout 是用於控制 Broadcast 的 Future 的超時時間,默認是 300s,可根據需求進行調整。

4,spark.sql.adaptive.enabled && spark.sql.adaptive.shuffle.targetPostShuffleInputSize

該參數是用於開啓 spark 的自適應執行,後面的 targetPostShuffleInputSize 是用於控制之後的 shuffle 階段的平均輸入數據大小,防止產生過多的task。

關於 spark 的自適應執行相關參數可看這篇文章:https://www.alibabacloud.com/help/zh/doc-detail/93157.htm

5,spark.sql.parquet.mergeSchema

默認 false。當設爲 true,parquet 會聚合所有 parquet 文件的 schema,否則是直接讀取 parquet summary 文件,或者在沒有 parquet summary 文件時候隨機選擇一個文件的 schema 作爲最終的 schema。

6,spark.sql.files.opencostInBytes

該參數默認 4M,表示小於 4M 的小文件會合併到一個分區中,用於減小小文件,防止太多單個小文件佔一個分區情況。

7,spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version

1 或者 2,默認是 1. MapReduce-4815 詳細介紹了 fileoutputcommitter 的原理,實踐中設置了 version=2 的比默認 version=1 的減少了70%以上的 commit 時間,但是1更健壯,能處理一些情況下的異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章