SparkSQL 調優

lanyu發表於2021-09-09

對一些SparkSQL任務,可以透過快取資料、調優引數、增加並行度提升效能

快取資料
sqlContext.cacheTable("tableName")或dataFrame.cache()構建一個記憶體中的列格式快取
使用sqlContext.uncacheTable("tableName")移除快取

快取設定
可以透過sqlContext.setConf或在SQL中執行SET key=value
setConf("spark.sql.inMemoryColumnarStorage.compressed","true") ,為每列自動選擇壓縮碼
setConf("spark.sql.inMemoryColumnarStorage.batchSize","1000") ,列式快取的批處理大小,大批次可以提升記憶體使用率和壓縮了,但是快取是會有溢位風險

調優引數

引數 預設值 解釋
spark.sql.autoBroadcastJoinThreshold 10485760(10M) Join操作時,要被廣播的表的最大位元組數,-1為禁止廣播
spark.sql.tungsten.enabled true 開啟tungsten最佳化
spark.sql.shuffle.partitions 200 shuffle資料時,可用分割槽數
spark.sql.planner.externalSort true 根據需要執行Sort溢位到磁碟上,否則在每個分割槽記憶體中

增加並行度
Spark採用記憶體列式儲存,實際執行查詢效率很高,相對而言資料載入階段耗時較長,合理設定並行度提升檔案載入效率

Spark的並行度指的是什麼?
spark作業中,各個stage的task的數量,也就代表了spark作業在各個階段stage的並行度

如何提高並行度?



作者:Alex90
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2819249/,如需轉載,請註明出處,否則將追究法律責任。

相關文章