首頁技術文章正文

Spark SQL用法建議【大數據文章】

更新時間:2021-01-14 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

       Spark SQL是Apache Spark處理結構化數據的模塊,優(yōu)化Spark SQL性能可以實現跟多的Spark操作。本文就來著重介紹Spark SQL性能調優(yōu)的方法。

  Spark.HadoopRDD.ignoreEmptySplits

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

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

  參數用于聚合input的小文件,控制每個mapTask的輸入文件,防止小文件過多時候,產生太多的task.

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

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

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

  參數是用于開啟Spark的自適應執(zhí)行,這是Spark比較老版本的自適應執(zhí)行,后面的targetPostShuffleInputSize是用于控制之后的shuffle 階段的平均輸入數據大小,防止產生過多的task。

  Spark.sql.parquet.mergeSchema

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

  Spark.sql.files.opencostInBytes

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

  Spark.Hadoop.mapreduce.fileoutputcommitter.algorithm.version

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



猜你喜歡:

如何理解Spark SQL?Spark SQL有什么功能?

Spark SQL架構詳細介紹

Spark Shell讀取HDFS文件的步驟有哪些?

黑馬大數據培訓課程 

分享到:
在線咨詢 我要報名
和我們在線交談!