Spark SQL關(guān)于性能調(diào)優(yōu)選項詳解
Spark_SQL性能調(diào)優(yōu)
眾所周知,正確的參數(shù)配置對提升Spark的使用效率具有極大助力,幫助相關(guān)數(shù)據(jù)開發(fā)、分析人員更高效地使用Spark進(jìn)行離線批處理和SQL報表分析等作業(yè)。
性能調(diào)優(yōu)選項
選型 | 默認(rèn)值 | 用途 |
---|---|---|
spark.sql.codegen | false | 設(shè)為 true 時,Spark SQL 會把每條查詢詞語在運行時編譯為 Java 二進(jìn)制代碼。這可以提高大型查詢的性能,但在進(jìn)行小規(guī)模查詢時會變慢 |
spark.sql.inMemoryColumnarStorage.compressed | false | 自動對內(nèi)存中的列式存儲進(jìn)行壓縮 |
spark.sql.inMemoryColumnarStorage.batchSize | 1000 | 列示緩存時的每個批處理的大小。把這個值調(diào)大可能會導(dǎo)致內(nèi)存不夠的異常 |
spark.sql.parquet.compression.codec | snappy | 使用哪種壓縮編碼器??蛇x的選項包括 uncompressed/snappy/gzip/lzo |
幾種壓縮選項的特點
spark.sql.parquet.compressed.codec 默認(rèn)值為snappy 這個參數(shù)代表使用哪種壓縮編碼器??蛇x的選項包括uncompressed/snappy/gzip/lzo
uncompressed這個顧名思義就是不用壓縮的意思
格式 | 可分割 | 平均壓縮速度 | 文本文件壓縮效率 | Hadoop壓縮編解碼器 | 純java實現(xiàn) | 原生 | 備注 |
---|---|---|---|---|---|---|---|
snappy | 否 | 非???/td> | 低 | org.apache.hadoop.io.compress.SnappyCodec | 否 | 是 | Snapp有純java的移植版,但是在Spark/Hadoop中不能用 |
gzip | 否 | 快 | 高 | org.apache.hadoop.io.compress.GzipCodec | 是 | 是 | |
lzo | 否 | 非常快 | 中等 | org.apache.hadoop.io.compress.LzoCodec | 是 | 是 | 需要在每個節(jié)點上安裝LZO |
可選的調(diào)優(yōu)選項
Property Name | Default | Meaning |
---|---|---|
spark.sql.files.maxPartitionBytes | 128 MB | 讀取文件時打包到單個分區(qū)的最大字節(jié)數(shù) |
spark.sql.files.openCostInBytes | 4 MB | 打開一個文件的估計成本,取決于有多少字節(jié)可以被同時掃描,當(dāng)多個文件放入一個 partition 時使用此方法。最好時過度估計,這樣帶有小文件的 partition 就會比帶有大文件的 partition 快 |
spark.sql.broadcastTimeout | 300 | 廣播連接中等待時的超時時間(以秒為單位) |
spark.sql.autoBroadcastJoinThreshold | 10 MB | 配置一個表的最大大小,以便在執(zhí)行連接向所有節(jié)點廣播,將該值設(shè)置為 -1 的話廣播將會被禁用 |
spark.sql.shuffle.partitions | 200 | 配置 partition 的使用數(shù)量當(dāng) shuffle 數(shù)據(jù)或聚合數(shù)據(jù)時 |
代碼示例
初始化設(shè)置Spark Application配置
構(gòu)建SparkSession實例對象
import org.apache.commons.lang3.SystemUtils import org.apache.spark.SparkConf import org.apache.spark.sql.streaming.OutputMode import org.apache.spark.sql.{DataFrame, SparkSession} object PerformanceTuneDemo { def main(args: Array[String]): Unit = { // 構(gòu)建SparkSession實例對象,設(shè)置相關(guān)屬性參數(shù)值 val sparkConf = new SparkConf() .setAppName(this.getClass.getSimpleName.stripSuffix("$")) .set("spark.sql.session.timeZone", "Asia/Shanghai") .set("spark.sql.files.maxPartitionBytes", "134217728") .set("spark.sql.files.openCostInBytes", "134217728") .set("spark.sql.shuffle.partitions", "3") .set("spark.sql.autoBroadcastJoinThreshold", "67108864") // 構(gòu)建SparkSession實例對象 val spark: SparkSession = SparkSession.builder() .config(sparkConf) .getOrCreate() } }
到此這篇關(guān)于Spark SQL關(guān)于性能調(diào)優(yōu)選項詳解的文章就介紹到這了,更多相關(guān)Spark SQL性能調(diào)優(yōu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于FlashPaper實現(xiàn)JSP在線閱讀代碼示例
這篇文章主要介紹了基于FlashPaper實現(xiàn)JSP在線閱讀代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10最新IntelliJ?IDEA?2022配置?Tomcat?8.5?的詳細(xì)步驟演示
這篇文章主要介紹了IntelliJ?IDEA?2022?詳細(xì)配置?Tomcat?8.5?步驟演示,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08Java啟動參數(shù)(-,?-X,?-XX參數(shù))的使用
本文主要介紹了Java啟動參數(shù)(-,?-X,?-XX參數(shù))的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Java開發(fā)者必備10大數(shù)據(jù)工具和框架
這篇文章主要為大家詳細(xì)介紹了Java開發(fā)者必備10大數(shù)據(jù)工具和框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06win11?idea?shift+F6快捷鍵失效問題解決方案
這篇文章主要介紹了win11?idea?shift+F6快捷鍵失效問題,本文給大家分享最新解決方案,需要的朋友可以參考下2023-08-08