一些常用的spark sql調優技巧
使用快取表
在sparksql中,當我們建立表時,我們可以通過呼叫spark.catalog.cachetable("tablename")
或者dataframe.cache()
的方式將表快取起來。這樣spark sql將僅掃瞄所需的列,並自動調整壓縮以最小化記憶體使用和gc壓力。
當你不需要快取時,可以通過使用spark.catalog.uncachetable("tablename")
將其移除快取。
此外,我們還可以通過設定spark.sql.inmemorycolumnarstorage.batchsize
來調整列快取batch的大,例如在提交spark作業時候,指定以下引數:
--conf "spark.sql.inmemorycolumnarstorage.batchsize=10000"
較大的batch size可以提高記憶體利用率和壓縮率,但在快取資料時存在oom風險。
調整shuffle分割槽
我可以通過調整在對資料進行shuffle或者aggregation操作時的分割槽數目來提高效能。
分割槽數和reduce任務數是相同的。如果reducer具有資源密集型操作,那麼增加shuffle分割槽將增加並行性,同時還可以更好地利用資源並最小化每個任務的負載。
我們可以通過設定spark.sql.shuffle.partitions
來調整spark sql作業中的shuffle分割槽數(預設值為200).
例如在提交spark作業時候,指定以下引數:
--conf "spark.sql.shuffle.partitions=2000"
使用broadcast join
broadcast join接類似於hive中的map join,其中較小的表將被載入到分布式快取中,並且連線操作可以作為map only操作來完成。 預設情況下,spark sql中會啟用廣播連線。當然,我們也可以指定以下引數將其關閉:
--conf「spark.sql.autobroadcastjointhreshold = -1」
這個引數是表示broadcast join時廣播表大小的閾值,-1
即可以理解為關閉broadcast join。
當然當我們開啟broadcast join時,也可以修改其數值來增加在執行連線操作時可以廣播的表大小的最大值。 預設值為10 mb,例如我們可以通過以下設定將其大小更改為50mb:
--conf "spark.sql.autobroadcastjointhreshold = 50485760"
參考資料:
spark-troubleshooting-guide-spark-sql-examples-of-commonly-used-spark-sqltuning-properties
一些調優引數
select sum pins reloads sum pins lib cache from v librarycache 查詢sql 分析解析率,大於90 說明sql解析正常,無需更改,至於更改方法,研究中 select sum gets getmisses sum gets hit from ...
WAS的一些重要調優引數
在著手進行 應用程式 伺服器的優化之前,首先進行 應用程式和操作 系統的優化是乙個更好的選擇。尤其是應用程式的優化,通過對應用程式中影響 效能的部分進行重新的設計和調整,往往能夠帶來比單純的引數調優更為巨大的效能提公升。對於一般的j2ee應用程式而言,was中最重要的優化引數包括針對jvm web ...
mysql調優的一些方面
1.首先的一點就是可以做乙個mysql集群實現讀寫分離 2.查詢sql慢日誌,給一些表做索引 3.調整mysql引數 設定合理的key buffer size,它是指索引緩衝區的大小,決定了索引的處理速度。大概的分配為1g設定128m,2g為256m,依此類推。檢視key buffer size的值...